java:多异常抛出
我读了一段代码:java:多异常抛出,java,exception,exception-handling,Java,Exception,Exception Handling,我读了一段代码: public void myfunc() throws MyException { try { // codes here } catch(AlreadyExistsException e) { throw new sub1MyException("yyy"); // first catch block } catch(Exception e) { throw
public void myfunc() throws MyException {
try {
// codes here
} catch(AlreadyExistsException e) {
throw new sub1MyException("yyy"); // first catch block
} catch(Exception e) {
throw new sub2MyException("xxx"); // second catch block
}
}
sub1MyException
和sub2MyException
都是MyException
的子类AlreadyExistsException
不是MyException
的子类
我有一些问题:
1,将抛出新的sub1MyException(“yyy”)代码>被第二个捕捉块捕捉?
2、上述代码中的任何反模式。我做了一些搜索,但没有找到任何类似的模式或例子。如果有,请留下评论
3,我认为没有必要使用这么多子类,因为异常消息已经在exception
中了。自定义消息,如yyy
和xxx
没有太大帮助
谢谢,不会的。它不在试一试的范围内
2和3-这取决于你需要做什么。如果您需要以不同的方式处理不同的异常,那么就这样做。否则,您可以捕获异常
catch
中嵌套一个try-catch
块才能实现这一点李>
异常
,因为这样您基本上不知道您期望的是什么(而try catch
块是关于可预测性的)。您应该将catchException
放在处理最终错误分派的通用错误处理程序中(显示一条丑陋的错误消息、记录错误等)Exception
类的传播策略不同(即try-catch
块在以后的道路上被处理),则应该只使用不同的Exception
类1.很容易测试/2。我会说不。最好不要依赖信息。我的意思是
newsomeexception(“错误1”)
对于其他的newsomeexception(“错误2”)
在大多数情况下是一个错误的想法: