首先从堆栈的顶部抛出一个异常, 如果未捕获到异常, 则将调用堆栈降到前一个方法;如果未捕获到那里, 则异常再次下降到前一个方法, 依此类推, 直到被捕获为止。被捕获或直到它们到达调用堆栈的最底端。这称为异常传播。 |
class TestExceptionPropagation1{
void m(){
int data=http://www.srcmini.com/50/0;
}
void n(){
m();
}
void p(){
try{
n();
}catch(Exception e){System.out.println("exception handled");
}
}
public static void main(String args[]){
TestExceptionPropagation1 obj=new TestExceptionPropagation1();
obj.p();
System.out.println("normal flow...");
}
}
立即测试
Output:exception handled
normal flow...
文章图片
【Java异常传播】在上面的示例中, 异常在未处理的m()方法中发生, 因此将其传播到先前未处理的n()方法中, 再次将其传播到在其中处理异常的p()方法中。
可以使用main()方法, p()方法, n()方法或m()方法在调用堆栈中的任何方法中处理异常。
规则:默认情况下, 检查异常不在调用链中传播(传播)。 描述不传播检查的异常的程序
class TestExceptionPropagation2{
void m(){
throw new java.io.IOException("device error");
//checked exception
}
void n(){
m();
}
void p(){
try{
n();
}catch(Exception e){System.out.println("exception handeled");
}
}
public static void main(String args[]){
TestExceptionPropagation2 obj=new TestExceptionPropagation2();
obj.p();
System.out.println("normal flow");
}
}
立即测试
Output:Compile Time Error
推荐阅读
- Java finally块
- Java中方法重写的异常处理
- 如何修复显示器屏幕变黑几秒钟(解决办法指南)
- esentutl.exe提示和指南(它是什么、用途、命令行)
- 什么是WD Discovery.exe(安全还是病毒、用途以及如何删除)
- 学习语言的20大Duolingo替代方案(最佳语言学习软件)
- Findstr.exe提示和指南(它是什么,用途,命令行)
- Wevtutil.exe进程指南(它是什么&命令行介绍)
- 什么是bash.exe、用途、安全还是病毒()