Java 未处理Throw语句报告IOException

Java 未处理Throw语句报告IOException,java,exception,throw,Java,Exception,Throw,我正在尝试为一个应用程序创建一个shell类。但是IDE一直报告“IOException”未处理,并建议我使用抛出。我希望在调用函数时处理异常,而不是忽略它们。我认为建设者不能扔,但有些人说不是。我甚至尝试使用一个单独的方法来创建流程,抛出异常,并尝试抛出其他异常。但同样的报道 报告是在抛出语句。调用具有抛出IOException的方法的方法(或构造函数)需要捕获异常,或者声明它也抛出异常 当一个方法声明它抛出一个异常时,那么它的调用方也必须捕获或声明该异常 因此,您可以: class simp

我正在尝试为一个应用程序创建一个shell类。但是IDE一直报告“IOException”未处理,并建议我使用抛出。我希望在调用函数时处理异常,而不是忽略它们。我认为建设者不能扔,但有些人说不是。我甚至尝试使用一个单独的方法来创建流程,抛出异常,并尝试抛出其他异常。但同样的报道

报告是在抛出语句。

调用具有
抛出IOException的方法的方法(或构造函数)需要捕获异常,或者声明它也抛出异常

当一个方法声明它抛出一个异常时,那么它的调用方也必须捕获或声明该异常

因此,您可以:

class simpleShell{
    Process sh;
    simpleShell(String shell)  {
        try {
            sh = Runtime.getRuntime().exec(shell);
        }catch (Exception e){
            throw e;
        }
    }

}
class Main{
public satic void main(String args[]){

try {
    simpleShell ss = new simpleShell("sh");
}catch{
    //do something
}

如果要捕获异常,请执行某些操作,然后重试,您需要声明您的方法引发异常:

void create(String shell) throws IOException {
   sh = Runtime.getRuntime().exec(shell);
}

您正在从该方法中抛出异常,但它没有这样声明。您需要在签名中添加
throws Exception
,或者在方法中不使用
throw e
。第二:当然,构造函数可以抛出异常。这段代码与构造函数抛出异常有什么关系?你确定这段代码代表了你所问的问题吗?很抱歉,问题质量很差。但它与发布的代码不同。你能看一下编辑并再次帮助我吗?也许我的答案不清楚。我想捕捉异常,这是正常的。但是我想将捕获的异常抛出给调用方函数。当我尝试思考它时,ide报告IOException不是handled@RiyadhKabir我添加了一个示例,显示Behavior But Not throws Suppress异常?如果exec发送IOException,而我由于throwsNo而无法捕获它,会发生什么情况,
throws
强制函数调用方捕获或声明异常。
void create(String shell) throws IOException {
   sh = Runtime.getRuntime().exec(shell);
}
void create(String shell) throws IOException {
        try {
            sh = Runtime.getRuntime().exec(shell);
        }catch (IOException e){
            // handle the exception in some way
            // then rethrow it
            throw e;
        }
}