Java “为什么?”;抛出;这里使用子句,如果不使用该子句怎么办?
这是我的密码Java “为什么?”;抛出;这里使用子句,如果不使用该子句怎么办?,java,exception,try-catch,throws,Java,Exception,Try Catch,Throws,这是我的密码 static void tryit() throws Exception { System.out.println(10 / 0); } public static void main(String[] args) { try { tryit(); } catch (Exception e) { System.out.println("Exception caught in main"); } } 这里我所
static void tryit() throws Exception
{
System.out.println(10 / 0);
}
public static void main(String[] args)
{
try {
tryit();
} catch (Exception e) {
System.out.println("Exception caught in main");
}
}
这里我所说的是,在这段代码的第1行中,抛出异常
到底做了什么?即使我没有使用它,我也得到了与之相同的输出 输出:在main中捕获异常
在哪里有效?在这段代码中有必要吗?在这种情况下,您不需要
抛出异常
,因为是一个,编译器不知道它将被抛出,所以它不会强迫您处理它。见:
在您应该这样做的情况下,如果您有一个不是运行时异常的异常,并且没有用try-catch子句包围可能引发异常的行,那么您必须将该方法声明为抛出该异常
这里我要说的是,在代码的第1行“抛出异常”
你到底想干什么
它将责任交给函数的调用者,这个方法可以抛出一个异常,您[调用者]必须处理它
而且,在您的例子中,它是一个运行时异常
,将从该方法中抛出,因此,无需使用异常声明该方法。这就是为什么即使您删除了抛出异常的部分,它仍然可以工作
如果该方法将抛出一个选中的异常,而您没有在方法本身内部处理它,那么您必须声明在方法签名中抛出该异常
在方法的签名中使用“throws”来通知“parent”
方法/调用此函数的方法“该函数可能”
抛出异常,“父”方法/调用方应该处理它。是的,正如@maroun maroun所说,“在目前的情况下,抛出是不必要的”
throws关键字告诉编译器,带有throws关键字的方法具有异常条件,它不会处理该异常。任何使用throws关键字调用该方法的方法都有责任处理该异常
在您的情况下,tryit()抛出异常,而不处理异常条件。在main中,您调用了tryIt(),因此main负责处理tryIt()抛出异常的未处理异常
Where it will be effective? Is it necessary in this code?
当您希望使用正确的try-catch(选中的异常类型)调用方法时,它是有效的
在这段代码中它是不必要的,因为在您的代码中,您将获得java.lang.arithmetricexception:/by zero exception,这是RuntimeException(未检查类型),编译器不会抱怨没有处理它
有关选中和未选中异常的更多信息,请参见谢谢大家。。我得到了各种各样的答案。。特别感谢@Maroun
Where it will be effective? Is it necessary in this code?