我这些天正在学习Java,并且我意识到在我的代码中处理异常非常重要。
我想问一下如何用各种方法处理异常?
是否要检查我用来查看方法抛出的异常的方法?在下面的例子中,我必须看到m()抛出的异常方法。
try {
m();
} catch(SomeException e) {
...;
}
使用Java编程时是否有任何思路来处理异常?
答案 0 :(得分:2)
要学习的主要技巧是如何不捕获异常,但让它们将调用堆栈向上传播到适当级别的异常处理程序。
一些经验法则:
只有在你有一个实际的逃生路线时,才能及早捕捉异常(接近它出现的地方),这是完成正在进行的请求的另一种方式;
要么记录异常或重新抛出异常,不要同时记录它们;
调用堆栈中的高位称为异常障碍:这是将异常记录为错误的唯一位置;
不要被检查异常误导:大多数时候检查/未检查的区别不显着。 Rethrow 检查异常(包含在RuntimeException
中)当您没有代码从中恢复时,大多数情况下就是这种情况。您也可以在方法标题中声明异常,但这很难实现;
要小心不要让异常导致资源泄漏:必须在finally
块中释放所有获取的资源。
阅读这些内容,您会注意到围绕例外的大多数问题都无法在最小的教科书示例中得到证明。例外是关于脂肪代码库中的信息和控制流程。
答案 1 :(得分:1)
通常,您至少需要记录异常。而当时
捕获异常确保您的catch块不为空
其中一些你可以处理,一些你不能(对他们你
通常需要修复你的代码,因为它们表明存在错误。)
所以有些是预料之中的,其他则是编程错误
一些是RuntimeExceptions(未选中),其他则不是RuntimeExceptions
(即检查)。您不需要在方法中声明的RuntimeExceptions
或者抓住(即你没有被语言本身强迫这样做)
http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html
http://docs.oracle.com/javase/7/docs/api/java/lang/RuntimeException.html
主题过于宽泛。
答案 2 :(得分:1)
你真的需要在异常处理上做一些tutorials,你可以使用:
try {
m();
} catch(Exception e) {
e.printStackTrace();
}
查看抛出的异常,然后阅读它。
答案 3 :(得分:0)
尝试使用下面链接中提到的这样的示例,这些示例将为您提供有关异常处理的明确说明。实际上是用它做的...
The 'Throwable' class is the superclass of all errors and exceptions in the Java language
Exceptions are broadly classified as 'checked exceptions' and 'unchecked exceptions'. All RuntimeExceptions and Errors are unchecked exceptions. Rest of the exceptions are called checked exceptions. Checked exceptions should be handled in the code to avoid compile time errors.
Exceptions can be handled by using 'try-catch' block. Try block contains the code which is under observation for exceptions. The catch block contains the remedy for the exception. If any exception occurs in the try block then the control jumps to catch block.
If a method doesn't handle the exception, then it is mandatory to specify the exception type in the method signature using 'throws' clause.
We can explicitly throw an exception using 'throw' clause.
http://java2novice.com/java_exception_handling_examples/
http://www.programmingsimplified.com/java/tutorial/java-exception-handling-tutorial