我只是想知道 Java VM 对 Try-Catch 做了什么。它是如何执行的?
我最好的猜测是,它就像一个 Linux 系统,在安装某些东西时会进行测试运行,如果没有发现错误,则询问用户是否要继续。在 Try-Catch 的情况下,它是否会进行测试运行,如果一切正常,是否执行它?
try
{
//execute your code
}catch(Exception e)
{
//Log message
//IF you don't want to continue with the logic inside method, rethrow here.
}finally{
//Ir-respective of what the status is in above cases, execute this code.
}
//Continue with other logic in the method
.这在您想确定部分代码需要执行(或)不在异常情况下的情况下很有用。
要了解有关 try-catch 在 java 中如何工作的更多信息,请阅读本教程。
它比这简单得多 - 如果 try 子句中包含的任何子句产生错误,则将执行 catch 子句中的代码(对应于该错误 - 一次尝试可以有多个 catch)将被执行。没有办法提前知道某个特定子句是否会失败,只能在错误发生后尝试恢复。
如果你有十个子句并且最后一个抛出错误,那么前 9 个执行的修改将不会被“还原”!
可以给出一些程序无法处理的意外结果的代码被保存在 try 块中,并且为了处理/捕获程序的意外崩溃,我们使用 catch 块。我们声明代码可以抛出的异常类型
例如:
int a;
try {
a=1/0;//program wil crash here
}catch(Exception e){
System.out.println("Division by zero ");//handling the crash here
}
它开始正常执行,无需任何检查。如果发生任何异常,它将跳出子句(就像break
在循环中),并立即执行catch
,如果没有发现异常,它将跳过 catch 子句。
该finally
子句确保无论是否抛出异常都会调用它。一个实际的例子是从文件或网络中读取,并关闭流,无论是否抛出异常。