我有一个关于 Java 中的 try/catch 和异常的问题。我知道这应该是基本知识,但我想我错过了一部分对其工作原理的理解。例如,给定此代码:
String res = "";
try {
res = methodThatCanThrowException();
res = res + ".txt";
} catch (Exception e) {
res = "somethingwentwrong.txt";
}
return res;
我能保证永远不会在 try 和 catch block 中设置“res”吗?如果在 try block 中的方法调用内部抛出异常,代码控制会直接转到 catch block ,对吗?有没有在 try 和 catch block 中都给“res”赋值的场景?
最佳答案
如果 methodThatCanThrowException
抛出异常,res
将不会在 try
block 中分配,所以只有 catch
block 会分配它(假设你修复了你的 catch block )。
但是,即使在 res
已经赋值后抛出异常,catch block 也会用新值覆盖它,所以它是否被两者赋值都没有关系。
关于java - 在 Java 中尝试 catch——发生异常时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33646902/