UncaughtExceptionHandler接口用来捕获运行时未被程序捕获异常.
如下面的例子.
for (int i=5;i >=0 ;i--) {
int value = 5 / i;
System.out.println(value);
}
直接在main方法里执行,在console里是不会报错的.
但仔细看一下代码会发现,当i为0时此处代码应该抛ArithmeticException.为何没有,是因为程序中没有任何异常catch.
如果在main方法中加入
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
public void uncaughtException(Thread t, Throwable e) {
e.printStackTrace();
}} );
再执行会发现console会出现
Exception in thread "main" java.lang.ArithmeticException: / by zero 信息.
在有线程的情况下。对于主线程是无法捕获Thread的异常的。
static class Task implements Runnable {
@Override
public void run() {
for (int i=5;i >=0 ;i--) {
int value = 5 / i;
System.out.println(value);
}
}
}
try {
Thread unCaughtableThread = new Thread(new Task());
unCaughtableThread.start();
} catch (Exception e) {
System.out.print("can do somthing");//无法执行
e.printStackTrace();
}
如果修改一下
try {
Thread caughtableThread = new Thread(new Task());
caughtableThread.setUncaughtExceptionHandler(new SimpleUncaughtExceptionHandler());
caughtableThread.start();
} catch (Exception e) {
System.out.print("can do somthing");//依然不会出执行
e.printStackTrace();
}
static class SimpleUncaughtExceptionHandler implements UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.err.println(t.getName() + " " +e.getMessage());//这里会捕获异常。
e.printStackTrace();
}
}
分享到:
相关推荐
java UncaughtExceptionHandler:里面我用了多线程,自己导入就可以运行。强大的异常处理不解释,吃透就你知道其中的奥妙。不懂的回帖
Android捕获异常处理——UncaughtExceptionHandler
添加UncaughtExceptionHandler这个类 iOS SDK提供的函数是NSSetUncaughtExceptionHandler来进行异常处理。但是无法处理内存访问错误、重复释放等错误,因为这些错误发送的SIGNAL。所以需要处理这些SIGNAL
在集成了统计SDK(友盟统计,百度统计等)之后,有一个非常有利于...首先实现创建一个类,实现UncaughtExceptionHandler接口。代码如下: 代码如下:public class CrashHandler implements UncaughtExceptionHandler {
Android 应用不可避免的会发生crash 即崩溃,无论程序写的多好...java的Thread中有一个UncaughtExceptionHandler接口,该接口的作用主要是为 了 当 Thread 因未捕获的异常而突然终止时,调用处理程序。 崩溃信息捕获,
android中用UncaughtExceptionHandler抓取闪退日志
此demo可以捕获android的异常,可以捕获ANR+UncaughtExceptionHandler类异常,并输出到本地文件,6.0需要添加动态读写权限
UncaughtExceptionHandler 来捕获异常
java UncaughtExceptionHandler:完整代码,自己导入就可以运行。异常处理
1.4 任务中返回值Callable接口 3 1.5 休眠 6 1.6 让步 6 1.7 优先级 6 1.8 后台线程(daemon) 6 1.9 加入线程(join) 8 1.10 捕获异常(UncaughtExceptionHandler) 9 1.11 线程与任务 10 1.12 让后计算 11 二 ...
整理完善usb通信(usb打印),可判断设备连接状态和开关机状态,设备连接过程中断开连接后,自动连接. UncaughtExceptionHandler接口实现本地捕获异常log信息保存到本地内存,方便查看调试!
注:下文中的 *** 代表文件名中的版本号。 # 【jna-***.jar中文文档.zip】 中包含: 中文文档:【jna-***-javadoc-API文档-中文(简体)版.zip】 ...com.sun.jna.Callback.UncaughtExceptionHandler ...... ```
在Android中有的未知的Bug可能在测试中没有及时发现,导致用户在使用时出现程序奔溃,出现用户...android提供了Thread.UncaughtExceptionHandler接口,可以通过实现这个接口,在全局中捕获异常并处理,上传到服务器。
注:下文中的 *** 代表文件名中的版本号。 # 【jna-***.jar中文文档.zip】 中包含: 中文文档:【jna-***-javadoc-API文档-中文(简体)版.zip】 ...com.sun.jna.Callback.UncaughtExceptionHandler ...... ```
注:下文中的 *** 代表文件名中的版本号。 # 【jna-***.jar中文文档.zip】 中包含: 中文文档:【jna-***-javadoc-API文档-中文(简体)版.zip】 ...com.sun.jna.Callback.UncaughtExceptionHandler ...... ```
Google考虑到这一点,也提供了Thread.UncaughtExceptionHandler接口来实现这一问题。 创建Crash异常捕获很简单,主要的步骤有: 1.创建BaseApplication继承Application并实现Thread.UncaughtExceptionHandler 2....
注:下文中的 *** 代表文件名中的版本号。 # 【jna-***.jar中文文档.zip】 中包含: 中文文档:【jna-***-javadoc-API文档-中文(简体)版.zip】 ...com.sun.jna.Callback.UncaughtExceptionHandler ...... ```
注:下文中的 *** 代表文件名中的版本号。 # 【jna-***.jar中文文档.zip】 中包含: 中文文档:【jna-***-javadoc-API文档-中文(简体)版.zip】 ...com.sun.jna.Callback.UncaughtExceptionHandler ...... ```
注:下文中的 *** 代表文件名中的版本号。 # 【jna-***.jar中文文档.zip】 中包含: 中文文档:【jna-***-javadoc-API文档-中文(简体)版.zip】 ...com.sun.jna.Callback.UncaughtExceptionHandler ...... ```