这里写目录标题
异常的种类
异常:程序运行时出现的错误。
编译期:通过javac命令.java转成.class,例如拼写。
而运行时是指程序已经编译通过得到class文件了,再由JVM执行过程中出现的错误。
1.算术异常(除以0)
int a=10;
int b=0;
System.out.println(a/b);
2.数组下标越界异常
int[] a={
1,2,3};
System.out.println(a[100]);
3.空指针异常
int[] a=null;
System.out.println(a.length);
防御编程“未言胜先言败”
错误在代码中是客观存在的. 因此我们要让程序出现问题的时候及时通知程序猿. 我们有两种主要的体现形式
LBYL: Look Before You Leap. 在操作之前就做充分的检查.如果上一部失败就不执行了
EAFP: It’s Easier to Ask Forgiveness than Permission. “事后获取原谅比事前获取许可更容易”.逻辑简单清楚,把正确的逻辑和错误处理逻辑区分开来
异常的使用
捕获异常
try:可能出现的异常的语句
catch:用来处理异常的代码,如果没有异常,则不执行catch中的代码。try和catch通常搭配使用
finally:异常处理完的善后工作
其中catch和finally可以根据情况选择是否加
try{
有可能出现异常的语句 ;
}[catch (异常类型 异常对象【定义一个异常的变量,用来接收try中抛出的异常对象】) {
} ... ]
[finally {
异常的出口
}
1.不处理异常
如果代码出现异常,没有使用异常处理机制,就会有jvm终止程序运行
int[] a=null;
System.out.println(a[0]);
System.out.println("hello");
2.使用try catch之后
try {
int[] a=null;
System.out.println(a[0]);
}catch(NullPointerException e){
System.out.println("catch中的代码");
}
System.out.println("hello");
2. 1 try-catch的执行顺序
try中没有出现异常,catch不执行
try {
System.out.println("try中异常之前的代码");
int[] a={
1,2};
System.out.println