本文主要是介绍32.自定义Java异常捕获处理类及其使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 自定义异常捕获处理类
/**
* <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);
}
}
}
- 使用异常捕获处理类
/**
* <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异常捕获处理类及其使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!