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