关于try-catch的问题

时间:2016-06-03 19:54:34

标签: java try-catch try-catch-finally

我想了解try-catch块。大多数情况下,我明白了这一点,但有两点,我不明白,也不知道我应该搜索哪些术语。

try{
    operation1;
    operation2;
    operation3;
    operation4;
}catch(Exception e){
//exception handling here.
}

Q1 :例如,在上面的示例中。如果operation1operation2成功完成但在operation3期间,如果它引发了异常,那么operation1operation2会被取消吗?或者他们会在手术后保持价值吗?

Q2 即可。如果我不知道,我的操作会抛出哪些例外。最好的办法是什么?据我所知,简单地抛出Exception并不是一个好习惯。

2 个答案:

答案 0 :(得分:2)

最佳做法是不使用单个try-catch包围长行代码。通过这样做,你会遇到你提到的确切含糊之处:我的任何陈述是否完整?哪个抛出异常?

相反,每个语句应该获得自己的try-catch块,如果它们都可以抛出异常。除非在try-catch中丢弃catch的结果,否则您应该避免将所有操作混为一谈。

至于抛出哪些异常 - 您必须根据您正在做的事情来了解(例如,当您访问数组时,如果您知道可能超出界限,则可以捕获ArrayOutOfBoundsException) 。但是,在大多数情况下,您不需要在每个操作中捕获所有可能的异常。根据您的项目大小,您甚至可以使用试验和错误。得到NullPointerException?了解如何防止代码引用null对象。

答案 1 :(得分:0)

1)操作不会撤消。 2)最佳实践是在try catch块中将所有可能的异常子类放到异常类中,这样如果在开始时没有特定的异常处理程序,那么Exception将处理这种情况。为每个操作分别设置try catch块是件好事,但代码看起来会很乱。