Java Try Catch块

用户59

我最初从大学开始编程,然后学习了vb.net。现在,我决定转向Java并进行一些查询。在vb中,try catch语句的布局如下

try
Catch ex as exception
finally
End catch

但是在Java网站(https://docs.oracle.com/javase/tutorial/essential/exceptions/putItTogether.html)中,我发现在Java中,您使用了两个陷阱,如下所示:

    try {

} catch (ExceptionType name) {

} catch (ExceptionType name) {

}

我希望有人能够解释为什么您需要在Java中使用两个catch,以及各自的catch做/捕获什么。

谢谢。

美娜

在Java中,可以使用多个catch块。

它不一定意味着您必须这样做。

这取决于你的代码必须在try块,多少检查Exception的IT可能会潜在地抛出(甚至未选中Exception■如果你真的想赶上那班,通常你不这样做,你不)。

一种不好的做法是将单个处理程序用于一般Exception(或更糟糕的是Throwable,也将捕获RuntimeExceptions和Errors):

try {
    // stuff that throws multiple exceptions
}
// bad
catch (Exception e) {
    // TODO
}

良好的做法是捕获所有可能抛出检查 Exception秒。

如果它们中的一些在继承方面相关,请始终先捕获子类(即更具体的Exceptions),以免您的代码无法编译:

try {
    // stuff that throws FileNotFoundException AND IOException
}
// good: FileNotFoundException is a child class of IOException - both checked
catch (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 unrelated
catch (FileNotFoundException | MyOwnCheckedException e) {
    // TODO
}

笔记

您链接到的这个示例中,将它们放在一起下面的第一个代码片段可以说是次优的:它确实捕获了可能抛出的Exceptions,但是其中一个是IndexOutOfBoundsException,这是一个RuntimeException(未选中),不应理论上处理。

取而代之的是,SIZE变量(或可能的常量)应由对List要迭代的大小的引用来代替,即list.size()为了防止IndexOutOfBoundsException被抛出。

我想在这种情况下只是提供一个例子。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在try / catch块Java中返回语句

来自分类Dev

在Java中try-catch-finally块

来自分类Dev

在try / catch块中引发的异常(Java)

来自分类Dev

Java:使用try catch块功能包装代码吗?

来自分类Dev

java try catch块不打印我想要的信息

来自分类Dev

try / catch块中有多个语句-Java

来自分类Dev

在Java中try / catch块编译的类问题

来自分类Dev

在Java中“取消嵌套”我的Try / Catch块

来自分类Dev

最后在Java中使用try catch块放置在哪里

来自分类Dev

对各种异常使用try-catch块(java)

来自分类Dev

声明try catch块

来自分类Dev

遍历try / catch块?

来自分类Dev

我们是否应该为Java中的每个try catch块编写catch(Exception e)

来自分类Dev

对Try / Catch块的最低要求

来自分类Dev

异常处理Try Catch块

来自分类Dev

对Try / Catch块的最低要求

来自分类Dev

如何在Java的try-catch块中强制方法的实现?

来自分类Dev

仅在try和catch块中没有引发异常的情况下,Java运行代码?

来自分类Dev

在java中返回try-catch的finally块。这个例子有什么好处吗?

来自分类Dev

Java如何在try-catch块之外访问变量

来自分类Dev

Java可选用法:仍然需要Eclipse的try-catch块

来自分类Dev

如何正确提取在Java中加载资源的简单try / catch块?

来自分类Dev

Java可选用法:仍然需要Eclipse的try-catch块

来自分类Dev

在Catch块中再次重用Try-Catch块

来自分类Dev

使用try-catch java

来自分类Dev

Java Try and Catch inputMismatchException 错误

来自分类Dev

使用try catch块时出错

来自分类Dev

JVM如何执行try catch finally块

来自分类Dev

在C#中替换try ... catch块