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

Java异常-在没有try catch的情况下处理异常

陶成化
2023-03-14
问题内容

在Java中,我们使用try catch块处理异常。我知道我可以像下面这样编写一个try catch块来捕获方法中抛出的任何异常。

try {
  // do something
}
catch (Throwable t) {

}

但是Java中有什么方法可以让我在发生异常时获取一种称为的特定方法,而不是像上面的方法那样编写一个包罗万象的方法?

具体来说,当抛出异常(我的应用程序逻辑未处理)时,我想在Swing应用程序中显示一条用户友好的消息

谢谢。


问题答案:

默认情况下,JVM通过将堆栈跟踪打印到System.err流中来处理未捕获的异常。Java允许我们通过提供自己的实现Thread.UncaughtExceptionHandler接口的例程来自定义此行为。

请看一下我有时写的这篇博客文章,其中详细解释了该文章(http://blog.yohanliyanage.com/2010/09/know-the-
jvm-1-uncaught-exception-handler/
)。

总之,您要做的就是编写您的自定义逻辑,如下所示:

public class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
  public void uncaughtException(Thread t, Throwable e) {
     // Write the custom logic here
   }
}

并使用我在上面链接中描述的三个选项中的任何一个进行设置。例如,您可以执行以下操作来设置整个JVM的默认处理程序(这样,抛出的任何未捕获的异常都将由该处理程序处理)。

Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler() );


 类似资料:
  • 你好,我正在学习OOP,通过编写一个虚拟的库管理项目在Java。 在serachBook()中,如果在ArrayList中找到book,则返回book对象,如果未找到,则抛出自定义异常BookNotFound。 问题1:它应该只返回null并在调用代码时检查返回值是否为null,还是抛出自定义异常BookNotFound。 目前我认为BookNotFinder是合适的,并且目前正在这样做。然而,我

  • 我想重写404响应的html错误页面作为JSON响应。当我使用而不使用时,它不起作用。

  • 问题内容: 当我的程序运行引发异常的行时,是否可以启动IPython Shell或提示? 我对引发异常的上下文,变量,作用域(和子作用域)最感兴趣。类似于Visual Studio的调试,当引发异常但未被任何人捕获时,Visual Studio将停止并为我提供调用堆栈和每个级别存在的变量。 您是否认为有办法使用IPython获得类似的东西? 编辑:启动IPython时,该选项似乎并没有达到我想要的

  • 主要内容:异常简介,异常类型很多事件并非总是按照人们自己设计意愿顺利发展的,经常出现这样那样的异常情况。例如: 你计划周末郊游,计划从家里出发→到达目的→游泳→烧烤→回家。但天有不测风云,当你准备烧烤时候突然天降大雨,只能终止郊游提前回家。“天降大雨”是一种异常情况,你的计划应该考虑到这样的情况,并且应该有处理这种异常的预案。 计算机程序的编写也需要考虑处理这些异常情况。 异常(exception)是在运行程序时产生的一种异

  • 我期望第1行捕获从第0行抛出的NullPointerException,但它没有发生。 但为什么呢?。 当定义了另一个catch块时,为什么第1行的NPE处理程序不能捕获它? 是因为“投掷”直接进入main()方法吗?

  • Java 的异常处理是 Java 语言的一大重要特性,也是提高代码健壮性的最强大方法之一。当我们编写了错误的代码时,编译器在编译期间可能会抛出异常,有时候即使编译正常,在运行代码的时候也可能会抛出异常。本小节我们将介绍什么是异常、Java 中异常类的架构、如何进行异常处理、如何自定义异常、什么是异常链、如何使用异常链等内容。 1. 什么是异常 异常就是程序上的错误,我们在编写程序的时候经常会产生错