在Java中抛出匿名异常

Rom*_*nov 2 java styles exception

在Java中有可能抛出任何异常,即使它只是在抛出的时刻声明,例如下面的例子:

import org.springframework.dao.DataAccessException;

 // DataAccessException - is abstract class

 } catch (DataAccessException dae) {
      throw new DataAccessException("Exception while executing SQL: \n" + sql
            +    "\nparams: " + paramsToString(params), dae) {
                          private static final long serialVersionUID = 1L;
      };
 } 
Run Code Online (Sandbox Code Playgroud)

请分享您的想法这种方法有多糟糕或不好.

同样的问题是扩展RuntimeException(不是抽象的)并立即抛出它.

Ste*_*n C 8

请分享您的想法这种方法有多糟糕或不好.

它应该是合法的...根据我对Java语言的理解.

从功能的角度来看,我认为这是毫无意义的.调用者仍然必须捕获您创建匿名子类型的基本异常.而且它不像匿名子类的名称传达任何有用的信息......

从代码可读性和可维护性的角度来看,我认为这很糟糕.这是没有充分理由的模糊,也没有我能辨认出的有用效果.

做一些奇怪的事情就像它可能会破坏一些东西......例如你的调试器,源代码分析器或Java链中的其他工具.


总之,没有兑换功能是一个坏主意.