当前位置: 首页 > 面试题库 >

System.exit(num)还是从main抛出RuntimeException?

简景焕
2023-03-14
问题内容

我有一个单线程应用程序,如果有问题,应该将DOS错误级别设置为非零。抛出RuntimeException还是使用System.exit(nonzero)更好?我不需要堆栈跟踪,也不希望此应用程序被扩展/重用。这两种选择之间有什么区别?


问题答案:

除非您确实有特殊情况,否则不要抛出异常。System.exit(int)正是因为这个原因。用它。

编辑:
我想我可能读错了你的问题。我以为您是在问,什么时候您想正常退出JVM,但发信号说事情不太正常,是抛出异常还是使用更好System.exit

但是,如果发生的问题是Java异常已经表明的问题,那么最好不处理该异常。您不必捕获异常并致电System.exit

如果您可以选择引发自己的异常还是调用异常,请System.exit考虑错误条件是否可能由调用您的方法的某些Java代码处理。如果错误直接在main方法中发生,则可能永远不会有调用方来处理该异常,因此您应该调用System.exit。否则,通常最好抛出一个异常-
但不是RuntimeException,您可能应该使用适当表示您遇到的错误的异常类型。RuntimeException如果需要,编写您自己的子类。



 类似资料:
  • 我有一个任务要将我的抛出异常从main()“移动”到lambda-expression。这意味着当在Lambda中发生异常时,程序将使用来自main的抛出。问题是,我不能创建任何其他的接口来自动实现这一功能,因为我的老师说只能使用java.util.function的接口,我也一直在网上找,但大多数答案都是“创建新的接口”。

  • 问题内容: 以下代码抛出: 因为它是静态的,所以我的编译器是否调用null?那没有任何意义! 发生了什么? 问题答案: 这里有两个问题在起作用: 不按照你的想法去做 在这种情况下返回 从到的分配会导致自动取消装箱 由于是被抛出 要解析,你可以使用例如。

  • 问题内容: 这是另一个有争议的主题,但是这次我只在寻找简单且记录在案的答案。场景: 让我们假设以下方法: 问题: 1.您如何建议改进这种归还某些属性的狗的技术? 2. rs.next()对于空的ResultSet将返回false,或者将生成异常,例如: 字符串str = null; System.out.println(str.toString()); 3.如果在从ResultSet的当前行初始化

  • 我正在重构我的promise,将代码链接到异步/等待样式。这样做的原因之一是我想要一个catch块来处理所有的错误情况(这里解释了如何理解node.js中的promise拒绝) 我的问题是,当我遇到同步错误时,我是否应该调用

  • 通常,对于,(或)作为读-修改-写操作不是原子操作。但是我经常看到编译器(例如GCC)为它生成以下代码(请在这里尝试): 既然与相对应的第5行是一条指令,那么我们是否可以断定在本例中是原子的呢? 更新 请注意,这个问题不是增量是否是原子的(它不是,这过去是,现在也是这个问题的开场白)。关键是在特定场景中是否可以,即在某些情况下是否可以利用单指令性质来避免前缀的开销。而且,正如关于单处理器机器的一节

  • 问题内容: 我使用的第三方库在遇到异常时会执行a 。我从jar里使用API​​。无论如何,由于它导致我的应用程序关闭,我可以阻止该调用吗?由于其他许多许可问题,在删除后我无法反编译和重新编译jar 。我曾经在中遇到一个[我不记得的其他问题]的答案,我们可以使用Java来做这样的事情。 问题答案: 基本上,它会安装一个安全管理器,该安全管理器会使用此处的代码禁用,