当我在Android上进行尝试捕获时,有很多例外情况。
ArrayIndexOutOfBoundsException
IOException等
问题是,当将这些异常应用于源时,我如何知道要使用哪个异常?
我想知道是否存在可以立即处理的异常。
答案 0 :(得分:0)
https://docs.oracle.com/javase/7/docs/api/java/lang/ArrayIndexOutOfBoundsException.html
查看文档img。
在这里您可以看到类/接口的层次结构。
请查看每个Exception的文档,并使用它们之间常见的类/接口。
您当然应该小心。小心,尤其是可扔。如果您错误地捕获了诸如StackOverflowError或OutOfMemoryError之类的程序,则该程序将是僵尸程序。
答案 1 :(得分:0)
要回答此问题,问题是,当将这些例外应用于源时,我如何知道要使用哪个例外? 有一个非常简单的规则,当您调用任何方法时,您必须知道此方法会引发哪种异常。您可以通过该特定语言的文档进行检查。例如,如果您使用的是Java,请考虑使用Oracle文档。例如,如果您的解析数字表示数字为字符串形式,例如
"123"
如果您像这样解析此数字。
Integer.parseInt("123")
这没关系,但是如果您像下面这样解析
Integer.parseInt("abc")
肯定不是有效数字。在这种情况下,它将抛出NUmberFOrmatException。 问题是,如何才能简单地将异常抛出给方法文档。如果您完全知道将抛出哪种异常,请使用该异常类,否则您可以使用 Exception 的所有异常的超类。
我希望这会对您有所帮助。
答案 2 :(得分:0)
只需使用putchar
(它是所有异常的超类)来捕获所有异常。但是不建议您这样做。您应该捕获已知的异常。同样,像intellij这样的IDE也会提醒您如果忘记这样做,则可以捕获异常。
答案 3 :(得分:0)
在Java中,有两种常见的例外情况:
实际上还有另外一种情况,您在任何情况下都不想捕获的异常(错误),但是现在让我们留着。
在第一种情况下,代码将无法编译,并且您会看到一条消息类型(假设是IOException
)
Error:(15, 12) java: unreported exception java.io.IOException; must be caught or declared to be thrown
这意味着您有义务处理Exception或将其委托给下一个调用方(将其抛出)。这种异常被认为是可恢复的,需要您采取一些措施。您绝对不会错过它。
第二种情况不需要您执行任何操作,并且该方法的文档根本无法描述此异常。这种异常被认为是不可恢复的,只是因为出现问题(在ArrayIndexOutOfBoundsException
的情况下您正在访问特定数组不存在的索引)而中断了操作链。
您可以捕获高级异常以涵盖更多案例,但尝试处理最窄的异常。
摘要:
您不需要事先知道方法抛出的所有异常。如果您有义务处理异常,编译器会告知您。