java DefaultUncaughtExceptionHandler 详解
【摘要】 在Java程序运行时,一些非受检异常可能会导致程序崩溃,比如NullPointerException、ArrayIndexOutOfBoundsException等等,这些异常都是由JVM抛出的,如果不对这些异常进行处理,小则线程运行中突然退出,大则整个程序崩溃。理想的场景下,每一个非受检异常都应该被捕获并进行处理,但是在实际开发中,我们往往会忽略一些异常,这些异常可能是由于程序员的疏忽导致...
在Java程序运行时,一些非受检异常可能会导致程序崩溃,比如NullPointerException、ArrayIndexOutOfBoundsException等等,这些异常都是由JVM抛出的,如果不对这些异常进行处理,小则线程运行中突然退出,大则整个程序崩溃。理想的场景下,每一个非受检异常都应该被捕获并进行处理,但是在实际开发中,我们往往会忽略一些异常,这些异常可能是由于程序员的疏忽导致的,也可能是由于程序员无法预知的原因导致的,比如第三方库抛出的异常。
为了避免这些异常导致程序崩溃,Java提供了一个全局的异常处理器,即DefaultUncaughtExceptionHandler,它可以捕获所有未被捕获的异常,从而避免程序崩溃。
DefaultUncaught的使用示例如下:
public class UncaughtExceptionHandle {
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler((t, e) -> log.error("Uncaught exception: ", e));
}
}
上述的代码会将未捕获的异常打印到日志中,如果你希望打印至标准输出或标准输出,可以将log替换为:
// 标准输出
System.out.println("Uncaught exception: " + e);
// 错误输出
System.err.println("Uncaught exception: " + e);
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)