解决方案 »

  1.   

    异常无法跨线程捕捉,即便是创建该线程的父线程。
    为了解决线程意外终止,确无法捕获异常,无法判断原因。可以使用Thread.UncaughtExceptionHandler。来进行捕获。
    具体参考下面的文章:
    http://blog.csdn.net/trendgrucee/article/details/17656217
      

  2.   

    我没有跨线程捕获异常,是在一个线程中调用了一个方法(方法A),方法又A调用了jar包中的方法(方法B),但是B抛出了异常,A却无法捕获到
      

  3.   

    我没有跨线程捕获异常,是在一个线程中调用了一个方法(方法A),方法又A调用了jar包中的方法(方法B),但是B抛出了异常,A却无法捕获到
    B在新线程运行的,所以捕捉不到。
      

  4.   

    我没有跨线程捕获异常,是在一个线程中调用了一个方法(方法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());
    }
    }
      

  5.   

    我没有跨线程捕获异常,是在一个线程中调用了一个方法(方法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());
    }
    }
    解决了,异常能被捕捉了.谢谢了,又是个知识点