在大学里有关Java的问题中,有以下代码片段:
class MyExc1 extends Exception {}
class MyExc2 extends Exception {}
class MyExc3 extends MyExc2 {}
public class C1 {
public static void main(String[] args) throws Exception {
try {
System.out.print(1);
q();
}
catch (Exception i) {
throw new MyExc2();
}
finally {
System.out.print(2);
throw new MyExc1();
}
}
static void q() throws Exception {
try {
throw new MyExc1();
}
catch (Excepthtml" target="_blank">ion y) {
}
finally {
System.out.print(3);
throw new Exception();
}
}
}
我被要求提供其输出。我回答了13Exception in thread main MyExc2
,但是正确答案是132Exception in thread main MyExc1
。为什么会这样呢?我只是不明白MyExc2去哪了。
通过阅读你的答案并了解你可能的想法,我相信你认为“进行中的例外”具有“优先权”。记住:
当一个新的异常被抛出到一个catch块或将要传播到该块之外的finally块中时,当新的异常向外传播时,当前异常将被中止(并被遗忘)。与其他任何异常一样,新异常开始释放堆栈,退出当前块(catch或finally块),并在此过程中接受任何适用的catch或finally块。
请注意,适用的catch或finally块包括:
当在catch块中引发新异常时,新异常仍受该catch的finally块(如果有)的影响。
现在,请回溯执行过程,并记住,每当你点击时throw,都应中止跟踪当前异常并开始跟踪新异常。
问题内容: 通常,我会遇到必须吞下/ 块中清理代码所引发的异常以防止原始异常被吞咽的情况。 例如: 假设记录任何异常不是方法块范围内的选项,而是由调用and 方法的代码完成。 吞没和方法抛出的异常是一个好主意吗?如果没有,什么是处理上述情况的更好方法,以免吞下异常? 问题答案: 我不喜欢捕捉和抛出异常。 如果你抓住它,做 一些 与它-即使它只是记录例外。 如果您不能执行任何操作,请不要捕获它-在方
在实际开发中,根据 try catch 语句的执行过程,try 语句块和 catch 语句块有可能不被完全执行,而有些处理代码则要求必须执行。例如,程序在 try 块里打开了一些物理资源(如数据库连接、网络连接和磁盘文件等),这些物理资源都必须显式回收。 Java的垃圾回收机制不会回收任何物理资源,垃圾回收机制只回收堆内存中对象所占用的内存。 所以为了确保一定能回收 try 块中打开的物理资源,异
问题内容: 有没有一种优雅的方法来处理块中引发的异常? 例如: 如何避免在/ 在块? 问题答案: 我通常这样做: 别处:
本文向大家介绍C#异常处理中try和catch语句及finally语句的用法示例,包括了C#异常处理中try和catch语句及finally语句的用法示例的使用技巧和注意事项,需要的朋友参考一下 使用 try/catch 处理异常 try-catch 块的用途是捕捉和处理工作代码所生成的异常。 有些异常可以在 catch 块中处理,解决问题后不会再次引发异常;但更多情况下,您唯一能做的是确保引发适
在下面的示例中,您可以看到无法使用外部catch子句捕获IOException(命名为第四个)异常。这是为什么?我知道,如果在嵌套的try块中抛出异常,使用外部catch可以捕获异常。如果您将b静态变量值更改为false,那么您可以看到这一点。 但是为什么我们不能使用外部catch捕获在嵌套catch子句中抛出的异常呢? 如果b=真,则输出: fileNotFoundException:FIRST
本文向大家介绍详解Java异常处理中finally子句的运用,包括了详解Java异常处理中finally子句的运用的使用技巧和注意事项,需要的朋友参考一下 当异常被抛出,通常方法的执行将作一个陡峭的非线性的转向。依赖于方法是怎样编码的,异常甚至可以导致方法过早返回。这在一些方法中是一个问题。例如,如果一个方法打开一个文件项并关闭,然后退出,你不希望关闭文件的代码被异常处理机制旁路。finally关