在进取的 Java 程序中经常看到以下模式
public Something myMethod() throws MyException {
try {
// may throw checked DbException:
Connection c = openDataBase("connectionstring");
// ... other code throwing more checked exceptions ...
} catch(DbException e) {
throw new MyException(e);
}
return something;
}
...或任何其他将方法头中未声明的已检查异常类型“转换”为. 很多时候,这个“try-catch-cast”块必须进入此类的每个方法。
我想知道,如何实现一个注释,捕获并转换异常?
使用代码应如下所示:
@ConvertException(MyException, DbException)
public Something myMethod() throws MyException {
// may throw checked DbException:
Connection c = openDataBase("connectionstring");
// ...
return something;
}
当然,也许必须写MyException.class
或"MyException"
代替。还应该可以链接这些注释,或列出多个要转换的异常。
我的猜测是注释会引入一个包装函数,其中包含调用原始函数的捕获代码块。然后注释将只有编译时保留(而不是运行时保留)。
我不主张这样做是明智的,这可能不是因为这些注释改变了程序语义。“只是学习”很可能是一个学术问题......