标签:有趣 打印 ret ble stack sys tab load 运行
常见格式:
try{ //可能异常代码块 }catch(捕获的异常类型){ //异常处理语句 }finally{ //一定要执行的代码 //一般用来关闭关闭流,数据库 } //捕获异常处理
运行流程
从上图可以发现finally语句必须执行
异常的分类如下所示
Thrawable/可抛出的异常
Exception/异常
编译时异常(受检异常)/Exception下,除了RuntimeException外所有
运行时异常(非受检异常)/RuntimeException
Error/错误
注意!
编译时异常,大多需要我们try-catch;
运行时异常,不需要强制try-catch,在发现错误后,修改错误(直接解决)。
常见运行异常:
名称 | 显示语句 |
---|---|
空指针 | NullpointerException |
数组下标越界 | ArrayIndexOutOfBoundsException |
转型错误 | ClassCastException |
算术异常 | ArithmeticException |
printStackTrace();
e.printStackTrace(); //打印异常的栈,该方法在Throwable中,其子类没有重写
在查看printStackTrace()打印出的语句时,从最后往前看
catch(Exception e){} //或者 catch(Thrawable e){}
try{ ? }catch(异常1){ ? }catch(异常2){ ? }catch(异常3){ ? }
注意:
多个异常依次捕获需要注意异常的顺序
最大的异常最后,父类异常放在最后处理.
多个异常捕获,只会根据顺序进入一个catch块
catch(异常1 | 异常2 | 异常3){ }
注意:
在catch中的异常为同级关系,不允许存在父子关系
try{ }finally{ }
try{ }catch{ }catch{ }finally{ }
try{ }catch{ }catch{ }
注意!以下书写方式不正确
try{ }
finally{ }
1.
int x = 1; try { System.out.println("A"); return ++ x; } catch (Exception e) { System.out.println("D"); } finally { System.out.println("B"); ++x; } System.out.println("C"); return x;
上题的输出结果为
A
B
y = 2
2.
String aa = "aa"; try { aa = "bb"; return aa; } catch (Exception e) { e.printStackTrace(); } finally { aa = "cc"; return aa; }
上题的输出结果为
y = cc
标签:有趣 打印 ret ble stack sys tab load 运行
原文地址:https://www.cnblogs.com/-Archenemy-/p/11972459.html