版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ddnosh/article/details/84253000
近期在review代码的时候发现,有些人为了图方便,直接在代码引用的最外层放上一个try catch,以为可以捕获一切异常,降低崩溃率。
事实上,如果try的是新开启的一个线程,那么这个线程里面出现的异常是catch不到。也就是说在A线程中new B线程,B线程中出现的crash跟A线程无关,A也catch不到。
public class TheadExceptionTest {
public static void main(String[] args) {
try {
new Thread(new Runnable() {
@Override
public void run() {
int i = 1 / 0;
}
}).start();
} catch (Exception e) {
}
}
}
这样的try是不不到异常的。需要在Thread里面加上try catch。
public class TheadExceptionTest {
public static void main(String[] args) {
try {
new Thread(new Runnable() {
@Override
public void run() {
try {
int i = 1 / 0;
} catch (Exception e) {
System.out.println("cannot / by zero!!!");
}
}
}).start();
} catch (Exception e) {
}
}
}