Java 向调用方法抛出错误!
我有一个thread类,在run方法中我调用了一个web服务,这个调用是在try-catch中进行的Java 向调用方法抛出错误!,java,exception,compiler-errors,Java,Exception,Compiler Errors,我有一个thread类,在run方法中我调用了一个web服务,这个调用是在try-catch中进行的 try { // Make webs service call } catch (Exception e) { throw e; } Eclipse不喜欢这样 基本上,我想将此错误抛出调用方法并在那里处理它?这是因为您正在重写run(),而重写将不允许您声明要抛出的更广泛的异常。您可以在RuntimeException中对其进行总结 像这样做 new Thread(new R
try {
// Make webs service call
}
catch (Exception e) {
throw e;
}
Eclipse不喜欢这样
基本上,我想将此错误抛出调用方法并在那里处理它?这是因为您正在重写
run()
,而重写将不允许您声明要抛出的更广泛的异常。您可以在RuntimeException
中对其进行总结
像这样做
new Thread(new Runnable() {
public void run() {
try{
//your code
}catch(Exception ex){
throw new RuntimeException(ex);//or appropriate RuntimeException
}
}
}).start();
}
这是因为您正在重写
run()
,并且重写将不允许您声明要抛出的更广泛的异常。您可以在RuntimeException
中对其进行总结
像这样做
new Thread(new Runnable() {
public void run() {
try{
//your code
}catch(Exception ex){
throw new RuntimeException(ex);//or appropriate RuntimeException
}
}
}).start();
}
如果抛出选中的异常,则必须使用try/catch或在方法签名中将其声明为抛出来处理该异常。看,;特别是关于.的部分,如果抛出选中的异常,则必须使用try/catch或将其声明为在方法签名中抛出来处理该异常。看,;特别是关于.Yep
java.lang.Exception
的部分被选中,因此您不能抛出它(因为Runnable.run在其throws子句中没有声明任何异常;它没有throws子句)。您只能抛出运行时异常。您必须处理已检查的异常——这正是Java迫使您做的。一种方法是将选中的异常转换为RunTimeException,以便可以抛出它。但别忘了这是一个单独的线程,所以请注意处理逻辑
public class ThreadFun implements Runnable {
public void run() {
// LEGAL
try {
} catch (RuntimeException e) {
throw e;
}
// NOT LEGAL
try {
} catch (Exception e) {
throw e;
}
}
}
Yep
java.lang.Exception
已选中,因此不能抛出它(因为Runnable.run在其throws子句中未声明任何异常;它没有throws子句)。您只能抛出运行时异常。您必须处理已检查的异常——这正是Java迫使您做的。一种方法是将选中的异常转换为RunTimeException,以便可以抛出它。但别忘了这是一个单独的线程,所以请注意处理逻辑
public class ThreadFun implements Runnable {
public void run() {
// LEGAL
try {
} catch (RuntimeException e) {
throw e;
}
// NOT LEGAL
try {
} catch (Exception e) {
throw e;
}
}
}
将
抛出异常
添加到方法签名中,而不是捕获异常。这将强制调用方法捕获异常。将抛出异常
添加到方法签名,而不是捕获异常。这将强制调用方法捕获异常。您所说的“Eclipse不喜欢这样!”是什么意思?未处理的异常类型异常“将此错误抛出调用方法”,我怀疑这是可能的,调用方法位于另一个线程上…您所说的“Eclipse不喜欢这样!”是什么意思?未处理的异常类型异常“将此错误抛出到调用方法“,我怀疑这是可能的,调用方法位于另一个线程上…的签名未声明它引发任何异常,因此您无法从中引发已检查的异常。的签名未声明它引发任何异常,因此您无法从中引发已检查的异常。如线程中所述,这不会像Runnable.run没有throws子句那样工作。正如线程中所说,这不会像Runnable.run没有throws子句那样工作。这里还有一些关于方法重写的内容。因为这里还有一些关于方法重写的内容。像