向调用方法抛出错误!

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

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

Eclipse不喜欢这个!

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

如果抛出已检查的exception,则必须使用try / catch处理exception,或者将其声明为方法签名中的抛出exception。 查看例外教程 ; 特别是关于三种例外的部分 。

是的,检查了java.lang.Exception ,因此你不能抛出它(因为Runnable.run没有在其throws子句中声明任何exception;它没有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; } } } 

那是因为你重写run()并且覆盖将不允许你声明更广泛的exception被抛出。 您可以在RuntimeException中将其包装起来。

做的事情就像

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

不是捕获exception,而是向方法签名添加throws Exception 。 这将强制调用方法来捕获exception。