在Java中, 可以 使用多个
catch块。
它不一定意味着您必须这样做。
这取决于你的代码必须在
try块,多少检查
Exception的IT可能会潜在地抛出(甚至未选中
Exception■如果你真的想赶上那班,通常你不这样做,你不
有 )。
一种 不好的
做法是将单个处理程序用于一般
Exception(或更糟糕的是
Throwable,也将捕获
RuntimeExceptions和
Errors):
try { // stuff that throws multiple exceptions}// badcatch (Exception e) { // TODO}
在 良好 的做法是捕获所有可能抛出 检查
Exception秒。
如果它们中的一些在继承方面相关,请始终先捕获子类(即更具体的
Exceptions),以免您的代码无法编译:
try { // stuff that throws FileNotFoundException AND IOException}// good: FileNotFoundException is a child class of IOException - both checkedcatch (FileNotFoundException fnfe) { // TODO}catch (IOException ioe) { // TODO}
还要看一下Java 7的multi-
catch块,其中不相关的
Exceptions可以一次捕获
|,每种
Exception类型之间使用分隔符:
try (optionally with resources) { // stuff that throws FileNotFoundException and MyOwnCheckedException}// below exceptions are unrelatedcatch (FileNotFoundException | MyOwnCheckedException e) { // TODO}
注意
在您链接到的这个示例中,
将它们放在一起 下面的第一个代码片段可以说是次优的:它 确实
捕获了可能抛出的
Exceptions,但是其中一个是
IndexOutOfBoundsException,这是一个
RuntimeException(未选中),不应理论上处理。
取而代之的是,
SIZE变量(或可能的常量)应替换为对
List要迭代的大小的引用,即
list.size()为了防止
IndexOutOfBoundsException被抛出。
我想在这种情况下只是提供一个例子。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)