问题1:子线程中的异常能在主线程中捕获吗?
答案:不能,子线程中的异常如果不处理会导致主线程崩溃。
问题2:子线程中的异常怎么处理?
答案:子线程中的异常需在子线程中处理。
示例代码:
public class Main {
public static void main(String[] args){
try{
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try
{
int b=0;
int a=1;
int c = a/b; //此处会抛异常,若不处理则主线程退出
System.out.println(c);
}
catch(Exception ex){
System.out.println("child thread " + ex.getMessage());
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
int b=1;
int a=1;
int c = a/b;
System.out.println(c);
}
}).start();
}catch(Exception ex){
System.out.println("main thread" + ex.getMessage());
}
System.out.println("main thread !!!"); //若不处理子线程的异常,主线程退出,此处代码无法执行
}
}