异常
- 什么是异常
- 程序在运行的过程中出现的意外情况
- 异常的类型:
- 检查性异常:最具有代表的检查性异常是用户错误或问题引起的异常,程序员无法预见的异常
- 运行时异常:运行时异常是可能被程序员避免的异常,在编译时被忽略。
- 错误ERROR:错误不算异常,而是脱离程序员控制的问题,编译时被忽略。
- 异常体系结构
- Java将异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类
- Java异常分为两大类:ERROR和Exception(Exception一般是可预见的可处理的)

- Java异常处理机制
- 抛出异常
- 捕获异常
- 关键字:
- try,catch,finally,throw,throws
- 处理异常
public class Demo01 {
public static void main(String[] args) {
int a=1,b=0;
//捕获多个异常时,要从小到大,向下写
//快捷键ctrl+alt+T
//异常被捕获,程序可以继续运行
//catch中填写的是想要捕获的异常类型
try {
// System.out.println(a/b);
new Demo01().test(a,2);
}catch (ArithmeticException e){
System.out.println(e);
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
//主动抛出异常
public void test(int a,int b) throws Exception {
if(b==0)
System.out.println("hhhh");
else
System.out.println("aaa");
System.out.println(a/b);
}
}
- 自定义异常
package com.gaopeng.exception;
public class MyException extends Exception{
private int a;
public MyException() {
super();
}
public MyException(int a) {
this.a = a;
}
@Override
public String toString() {
return "MyException{" +
"a=" + a +
'}';
}
}
package com.gaopeng.exception;
public class Test {
public static void main(String[] args){
try {
new Test().a();
} catch (MyException e) {
System.out.println(e);
} catch (Exception e) {
System.out.println(e);
} finally {
}
System.out.println(1/0);
}
public void a() throws MyException {
throw new MyException(1);
}
}
- 总结
- 处理运行时异常,采用合理的逻辑规避,同时辅助try-catch处理
- 在多重catch块后面,可以加上一个catch(Exception)来处理可能会被遗漏的异常(或者Throwable)
- 对于不确定的代码,也可以加上try-catch,处理潜在的异常
- 尽量的处理异常,切记知识打印输出
- 具体的异常处理,根据实际情况而定
- 尽量添加finally语句块释放占用的资源