Ema*_*mid 2 exception-handling exception try-catch throwable
我想知道Java中处理和未处理的异常之间的区别.哪一个我应该使用try/catch块,当我必须扩展throwables.
另外,如果我扩展throwables,我是否总是要在一个单独的类中处理异常?
如果要在单独的类中处理异常,我可以创建自定义功能(例如,调用另一个方法或中断循环)而不是仅使用自定义消息覆盖超级构造函数吗?
我假设'处理和未处理'的例外,你的意思是'检查和未检查'.
未经检查的异常 - 所有扩展RuntimeException的类都被称为未选中.它们通常表示编程错误,例如逻辑错误或API的不当使用.
未经检查的异常示例:
? ArithmeticException
? NullPointerException
? IndexOutOfBoundsException
? IllegalArgumentException
? ClassCastException
Run Code Online (Sandbox Code Playgroud)
例如,如果您尝试仅使用5个单元格访问数组的第10个单元格,则会导致ArrayIndexOutOfBoundsException.这是一个程序员错误和程序员的错误,所以应该这样对待它.不应使用try/catch处理此异常,而应使用if语句检查数组的大小.
检查异常 - 这些是编写良好的应用程序应该预期和恢复的特殊条件.Java中的已检查异常扩展了Exception类,但不扩展RuntimeException类.已检查的例外情况受" 捕获或指定要求 "的约束:
当在方法的主体中某些代码可能抛出已检查的异常时,该方法必须处理此异常或指定它可能抛出此异常
已检查例外的示例:
? FileNotFoundException
? IOException
? SQLException
Run Code Online (Sandbox Code Playgroud)
例如,您可能拥有一个编写良好的代码,可以将数据读取或写入文件,但该文件可能会被另一个用户从文件系统中突然删除.这不是一个错误programmer`s,但CAN发生,所以你必须预测并处理这种情况.
因此,要总结:未检查异常不可在处理与try/catch
-他们应该被视为一个错误,应该是固定的(或避免if
语句).当然你可以使用try/catch块来处理RuntimeException
(例如NullPointerException
),但这不是一个好习惯.
必须使用try/catch
块处理已检查的异常,或者当方法不知道如何处理它们时,应声明它们被方法本身抛出.因此,处理异常的责任转移到将调用此方法的方法.这就是Catch或Specify要求所说的内容.
归档时间: |
|
查看次数: |
2871 次 |
最近记录: |