Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向调用方法抛出错误!_Java_Exception_Compiler Errors - Fatal编程技术网

Java 向调用方法抛出错误!

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

我有一个thread类,在run方法中我调用了一个web服务,这个调用是在try-catch中进行的

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子句那样工作。这里还有一些关于方法重写的内容。因为这里还有一些关于方法重写的内容。像