java中抛出的异常无法被捕获到,究竟是为啥,有高手来解答否 异常java线程exception 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 异常无法跨线程捕捉,即便是创建该线程的父线程。为了解决线程意外终止,确无法捕获异常,无法判断原因。可以使用Thread.UncaughtExceptionHandler。来进行捕获。具体参考下面的文章:http://blog.csdn.net/trendgrucee/article/details/17656217 我没有跨线程捕获异常,是在一个线程中调用了一个方法(方法A),方法又A调用了jar包中的方法(方法B),但是B抛出了异常,A却无法捕获到 我没有跨线程捕获异常,是在一个线程中调用了一个方法(方法A),方法又A调用了jar包中的方法(方法B),但是B抛出了异常,A却无法捕获到B在新线程运行的,所以捕捉不到。 我没有跨线程捕获异常,是在一个线程中调用了一个方法(方法A),方法又A调用了jar包中的方法(方法B),但是B抛出了异常,A却无法捕获到B在新线程运行的,所以捕捉不到。如果不能给改B,用下面的方式试一下,看能不能抓到。设置线程默认异常处理handle。import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread t, Throwable e) { System.out.println("catched it :" + t.getName() + "," + e); }}class ExceptionThread implements Runnable { public void run() { Thread t = Thread.currentThread(); System.out.println("run() by " + t); System.out.println("eh=" + t.getUncaughtExceptionHandler()); throw new RuntimeException(); }}public class SettingDefaultHandler { public static void main(String[] args) { Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler()); ExecutorService exec = Executors.newCachedThreadPool(); exec.execute(new ExceptionThread()); }} 我没有跨线程捕获异常,是在一个线程中调用了一个方法(方法A),方法又A调用了jar包中的方法(方法B),但是B抛出了异常,A却无法捕获到B在新线程运行的,所以捕捉不到。如果不能给改B,用下面的方式试一下,看能不能抓到。设置线程默认异常处理handle。import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread t, Throwable e) { System.out.println("catched it :" + t.getName() + "," + e); }}class ExceptionThread implements Runnable { public void run() { Thread t = Thread.currentThread(); System.out.println("run() by " + t); System.out.println("eh=" + t.getUncaughtExceptionHandler()); throw new RuntimeException(); }}public class SettingDefaultHandler { public static void main(String[] args) { Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler()); ExecutorService exec = Executors.newCachedThreadPool(); exec.execute(new ExceptionThread()); }}解决了,异常能被捕捉了.谢谢了,又是个知识点 java虚拟机设计模式 请问Swt designer下载地址 javascript中的数据类型 分析 smratupload怎样实现图片批量上传,并能下载图片。在线等! 什么是java装饰设计模式 字符串的问题哈,应该很简单,哪位给解释一下 新手初学JAVA,喜欢各位关照啊 把各个panel中的代码集中起来是不是合适? 给我JavaKey.exe,在下感谢万分 Java初学者求助 发现JAVA图形化编程的一个问题:不能有死循环! 多客户端访问问题
为了解决线程意外终止,确无法捕获异常,无法判断原因。可以使用Thread.UncaughtExceptionHandler。来进行捕获。
具体参考下面的文章:
http://blog.csdn.net/trendgrucee/article/details/17656217
B在新线程运行的,所以捕捉不到。
B在新线程运行的,所以捕捉不到。如果不能给改B,用下面的方式试一下,看能不能抓到。
设置线程默认异常处理handle。import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler { @Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("catched it :" + t.getName() + "," + e);
}}class ExceptionThread implements Runnable {
public void run() {
Thread t = Thread.currentThread();
System.out.println("run() by " + t);
System.out.println("eh=" + t.getUncaughtExceptionHandler());
throw new RuntimeException();
}
}public class SettingDefaultHandler {
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler()); ExecutorService exec = Executors.newCachedThreadPool();
exec.execute(new ExceptionThread());
}
}
B在新线程运行的,所以捕捉不到。如果不能给改B,用下面的方式试一下,看能不能抓到。
设置线程默认异常处理handle。import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler { @Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("catched it :" + t.getName() + "," + e);
}}class ExceptionThread implements Runnable {
public void run() {
Thread t = Thread.currentThread();
System.out.println("run() by " + t);
System.out.println("eh=" + t.getUncaughtExceptionHandler());
throw new RuntimeException();
}
}public class SettingDefaultHandler {
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler()); ExecutorService exec = Executors.newCachedThreadPool();
exec.execute(new ExceptionThread());
}
}
解决了,异常能被捕捉了.谢谢了,又是个知识点