当前位置:  开发笔记 > 编程语言 > 正文

您想在哪里捕获异常以及为什么?

如何解决《您想在哪里捕获异常以及为什么?》经验,为你挑选了2个好方法。

您想在哪里捕获异常以及为什么?

我很有兴趣看到人们发现将try/catch块放在哪里是有用的,希望可能出现一些通用模式.我将用C++发布我的两个示例答案,但任何语言都可以.

请回答一个位置和原因.谢谢.



1> peSHIr..:

不要抓住任何你不准备和能够处理的东西.

因此,有顶级异常处理来按照您喜欢的方式轰炸应用程序意外异常,然后只捕获您需要的东西(尽可能接近它可能发生的地方)以获得所需的功能.

而且你应该只做以下两件事之一:实际上做一些事情来解决/解决问题或重新抛出一个更具描述性的异常,它将被捕获的异常作为它innerException.

编辑:如果您需要一个finally块(例如,释放您在代码中分配的内容),并且您没有任何有用的任何有用的异常,可能会弹出相同的逻辑:只是不处理它们.相反,使用a catch { throw; }将异常重新抛出到更高级别,同时保持所有异常信息不变.(或者只是省略catch块,我认为/希望做同样的事情?)



2> nes1983..:

我试图抓住那些我可以处理的异常.

我讨厌这样的代码:

      String s="12";
      Integer i;
        try {
          i = Integer.parseInt(s);
        } catch(ParseException pe) {
          System.out.println("hihihihihihihi!!!);
        }

我特别讨厌的是,这通常做的就是中止线程,因为之后三行会有一个对i的访问,它将假设i!= null.

然后,您将读取您的堆栈跟踪并滚动并滚动并滚动日志,直到您发现第一个重大错误,使其他一切崩溃.

无论如何,我希望Java不会强迫我抓住我无法处理的例外情况.但我能做的就是:

catch(Exception e) {
  throw new RuntimeException(e);
}

我在函数定义中声明了很多"抛出".

我仍然梦想有一天Eclipse会在一个未被捕获的异常时自动打开一个正确的调试器.那天,我的方法将打开正确的行.

在其他语言中,比如Smalltalk,我只捕获了我能处理的错误.当输入不符合我的期望时,我很高兴地抛出未被捕获的异常.

我的想法是,我不希望记录或记录错误.我想要它修复.


您好nes1983不确定您是否了解http://stackoverflow.com/questions/3066199/eclipse-break-when-exception-is-thrown - 关于您对Eclipse将自动打开调试器的日子的评论您.它不是*正好*你正在寻找什么,但会带你去那里吗?赞赏你的答案顺便说一句.
推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有