向调用方法抛出错误!
我有一个线程类,在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。