Android尝试捕获一种方法的异常值

时间:2018-11-29 12:24:23

标签: java android

当我在Android上进行尝试捕获时,有很多例外情况。

ArrayIndexOutOfBoundsException

IOException等

问题是,当将这些异常应用于源时,我如何知道要使用哪个异常?

我想知道是否存在可以立即处理的异常。

4 个答案:

答案 0 :(得分:0)

https://docs.oracle.com/javase/7/docs/api/java/lang/ArrayIndexOutOfBoundsException.html

查看文档img。

Documents

在这里您可以看到类/接口的层次结构。

请查看每个Exception的文档,并使用它们之间常见的类/接口。

您当然应该小心。小心,尤其是可扔。如果您错误地捕获了诸如StackOverflowError或OutOfMemoryError之类的程序,则该程序将是僵尸程序。

答案 1 :(得分:0)

要回答此问题,问题是,当将这些例外应用于源时,我如何知道要使用哪个例外?  有一个非常简单的规则,当您调用任何方法时,您必须知道此方法会引发哪种异常。您可以通过该特定语言的文档进行检查。例如,如果您使用的是Java,请考虑使用Oracle文档。例如,如果您的解析数字表示数字为字符串形式,例如

"123"

如果您像这样解析此数字。

Integer.parseInt("123")

这没关系,但是如果您像下面这样解析

    Integer.parseInt("abc")

肯定不是有效数字。在这种情况下,它将抛出NUmberFOrmatException。 问题是,如何才能简单地将异常抛出给方法文档。如果您完全知道将抛出哪种异常,请使用该异常类,否则您可以使用 Exception 的所有异常的超类。

我希望这会对您有所帮助。

答案 2 :(得分:0)

只需使用putchar(它是所有异常的超类)来捕获所有异常。但是不建议您这样做。您应该捕获已知的异常。同样,像intellij这样的IDE也会提醒您如果忘记这样做,则可以捕获异常。

答案 3 :(得分:0)

在Java中,有两种常见的例外情况:

  1. 必须捕获的异常(已检查的异常
  2. 您可以捕获的异常(但除非有充分的理由,否则不要这样做)(未经检查的异常

实际上还有另外一种情况,您在任何情况下都不想捕获的异常(错误),但是现在让我们留着。

在第一种情况下,代码将无法编译,并且您会看到一条消息类型(假设是IOException

Error:(15, 12) java: unreported exception java.io.IOException; must be caught or declared to be thrown

这意味着您有义务处理Exception或将其委托给下一个调用方(将其抛出)。这种异常被认为是可恢复的,需要您采取一些措施。您绝对不会错过它。

第二种情况不需要您执行任何操作,并且该方法的文档根本无法描述此异常。这种异常被认为是不可恢复的,只是因为出现问题(在ArrayIndexOutOfBoundsException的情况下您正在访问特定数组不存在的索引)而中断了操作链。

您可以捕获高级异常以涵盖更多案例,但尝试处理最窄的异常。

摘要:

您不需要事先知道方法抛出的所有异常。如果您有义务处理异常,编译器会告知您。