Java教程

32.自定义Java异常捕获处理类及其使用

本文主要是介绍32.自定义Java异常捕获处理类及其使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  1. 自定义异常捕获处理类
/**
 * <h1>异常捕捉</h1>
 * */
public class ExceptionHandler implements Thread.UncaughtExceptionHandler {

    @Override
    public void uncaughtException(Thread t, Throwable e) {

        StackTraceElement[] ses = e.getStackTrace();
        System.err.println("Exception in thread \"" + t.getName() + "\" " + e.toString());
		
        for (StackTraceElement se : ses) {
            System.err.println("\tat " + se);
        }
		
        Throwable ec = e.getCause();
        if (null != ec) {
            uncaughtException(t, ec);
        }
    }
}
  1. 使用异常捕获处理类
/**
 * <h1>想办法打印完整的异常栈信息</h1>
 * */
public class CompleteException {

    private void imooc1() throws Exception {
        throw new Exception("imooc1 has exception...");
    }

    private void imooc2() throws Exception {

        try {
            imooc1();
        } catch (Exception ex) {
            throw new Exception("imooc2 has exception...", ex);
        }
    }

    private void imooc3() {
        try {
            imooc2();
        } catch (Exception ex) {
//            Throwable
            throw new RuntimeException("imooc3 has exception...", ex);
        }
    }

    public static void main(String[] args) {
            // 默认异常处理
//        try {
//            new CompleteException().imooc3();
//        } catch (Exception ex) {
//            ex.printStackTrace();
//        }

        // 使用自定义异常捕获处理类,打印所有异常信息
        Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler());
        new CompleteException().imooc3();
    }
}
这篇关于32.自定义Java异常捕获处理类及其使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!