我对 Java 编程几乎完全陌生,我正在尝试了解 try 和 catch 异常处理的运行方式。
我的疑问是,当我创建一个自定义异常类并将其放入主类的 try block 中时,我可以在没有引用的情况下实例化它,但是当我编写 catch block 时,我可以使用以下成员:与实例化的异常类相同,无需实例化。
例如:
public void main.....{
.....
try{
if(division==0){
throw new DivisionByZero() ;
//Divisionbyzero is my customized exception class
}
}
catch(DivisionByZero e) {
e. methodDivisionByZero;
}
}
重点是,我可以直接使用 e 成员,而无需通过 new 实例化它。 当我抛出异常之前, e 是否以某种方式实例化(即使我没有在 try block 中写入任何引用)?
预先感谢您的回答。
最佳答案
当抛出异常时,会创建一个异常对象,并且不会在 try block 中执行更多行。这个异常对象与catch block 参数相匹配,最合适的接收参数变量中的对象就像方法参数。在这种情况下,catch(DivisionByZero e)
正确的catch子句应该是catch(ArithmeticException e)
来捕获被零除异常和参数e
是对异常对象的引用。
关于Java - try 和 catch 异常处理如何运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46784911/