Java异常处理 - 这是一个好习惯吗?

bal*_*anv 2 java exception

我正在为一个框架开发一个Java插件.

我编写了我的代码,其入口点函数如下所示(考虑这是起点,主函数)

function entryPoint()
{
   try{
      //some code block
      subFunction1();
      subFunction2();
   }
   catch(Exception e) {}
   catch(IOException ioe) {}
   catch(NullPointerException npe){}
}

function subFunction1() throws IOException
{
    //some code
}

function subFunction2() throws NullPointerException
{
    //some code
}
Run Code Online (Sandbox Code Playgroud)

所以这个想法是,所有的子函数都抛出了主要函数的特定异常,我们在主要函数中捕获这些异常并进行处理.

这种方式是否正确?如果没有,请建议更好的方法.

kos*_*tja 10

  • catch应更改语句的顺序.由于第一个catch将匹配all Exceptions,因此永远不会触发以下两个.

  • NPE在大多数情况下,A 是意外的,不可恢复的.捕获它意味着应用程序能够从中恢复并运行.真的是这样吗?

  • 即使NPE可以恢复,也可以选择检查!= null而不是依赖命令流的异常.这是出于概念上的原因(基于异常的命令流需要更多代码,可读性更低,意图通常不清楚)以及性能原因.

  • 所有人Exceptions都被吞下 - 没有记录或重新抛出.这样,没有人会知道是否以及什么时候出错,因为没有记录异常.在大多数情况下,用户,其他开发人员和维护人员都希望几乎所有异常都是非常特殊的,因此需要记录.