关于试抓的问题



我试图理解try-catch块。大多数情况下,我明白了重点,但有两点我不明白,也不知道我应该用哪些术语搜索它们。

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

Q1:例如,在上面的例子中。如果operation1operation2成功完成,但在operation3期间,如果引发异常,operation1operation2会被撤消吗?还是在操作后他们会保持这些价值观?

问题 2.如果我不知道,我的操作可能会引发哪些异常。最好的方法是什么?据我所知,简单地投掷Exception不是一个好习惯。

最佳做法是不要用单个try-catch将长代码行括起来。通过这样做,你会遇到你提到的确切的歧义:我的任何陈述是否完整?哪个抛出了异常?

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

至于抛出哪些异常 - 你必须根据你正在做的事情知道(例如,当你访问数组时,如果你知道你可能会越界,你可以抓住ArrayOutOfBoundsException)。但是,在大多数情况下,您不需要在每个操作中捕获每个可能的异常。根据您的项目规模,您甚至可以只使用试错法。有NullPointerException?了解如何防止代码引用 null 对象。

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

相关内容

  • 没有找到相关文章

最新更新