向调用方法抛出错误!

时间:2011-05-12 10:39:26

标签: java exception compiler-errors

我有一个线程类,在run方法中我正在调用一个Web服务,这个调用是在try catch

try {
    // Make webs service call
}
catch (Exception e) {
    throw e;
}

Eclipse不喜欢这个!

基本上我想把这个错误抛给调用方法并在那里处理它?<​​/ p>

4 个答案:

答案 0 :(得分:4)

如果抛出一个已检查的异常,则必须使用try / catch处理该异常,或者在方法签名中将其声明为抛出异常。见exceptions tutorial;特别是关于The Three Kinds of Exceptions的部分。

答案 1 :(得分:3)

那是因为你覆盖了run()并且覆盖将不允许你声明更广泛的异常被抛出。您可以将其打包在RuntimeException

做类似

的事情
 new Thread(new Runnable() {

            public void run() {
                try{
                   //your code
                }catch(Exception ex){
                    throw new RuntimeException(ex);//or appropriate RuntimeException
                }
            }
        }).start();

    }

答案 2 :(得分:3)

是的java.lang.Exception被检查,所以你不能抛出它(因为Runnable.run没有在其throws子句中声明任何异常;它没有throws子句)。你只能抛出RunTimeExceptions。您必须处理Checked Exceptions - 这就是Java强迫您做的事情。一种方法是将Checked Exception转换为RunTimeException,以便抛出它。但是不要忘记这是一个单独的线程,所以要注意你的处理逻辑。

public class ThreadFun implements Runnable {

    public void run()  {

        // LEGAL
        try {

        } catch (RuntimeException e) {
            throw e;
        }

        // NOT LEGAL
        try {

        } catch (Exception e) {
            throw e;
        }           
    }
}

答案 3 :(得分:0)

不是捕获异常,而是将throws Exception添加到方法签名中。这将强制调用方法来捕获异常。