【发布时间】:2017-01-26 08:36:01
【问题描述】:
我正在用 Java 创建一个基本的数学解析器,这样做暴露了我对 Java 异常处理的浅薄理解。
当我有这个输入时:
String mathExpression = "(3+5";
我随后致电:
throw new MissingRightParenException();
IDE 强制我用 try/catch 包围,如下所示:
try {
throw new MissingRightParenException();
} catch (MissingRightParenException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但是,为了强制这是一个致命异常,看来我必须添加自己的代码来调用 System.exit(),如下所示:
try {
throw new MissingRightParenException();
} catch (MissingRightParenException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(0);
}
我不确定我是否理解所有这些背后的语法,尤其是为什么我必须在抛出异常时使用 try/catch 块。
这背后的韵律和原因是什么?
我可以这样做,而不是抛出异常:
new MissingRightParenException();
而不是调用
throw new MissingRightParenException();
所以我想我的问题是 - 如果这是一个致命的异常,那么在为用户提供最佳反馈的同时让它真正致命的最佳方法是什么?
【问题讨论】:
标签: java