一.异常的概念
异常就是没有按照正常的预期产生结果.是一种可能性.
Java中的异常:方法在运行时发生的不正常情况。
注意:编译出错不是异常。(通俗点来说就是你代码打错了);
二.异常的结构
Throwable
│————Exception (异常);
│ ├-IOException (流异常,通常用在文件读取中);
│ └-RuntimeException (运行时异常,表示你的代码本身存在问题);
│
│
└————Error (错误)
三.异常的处理方式
//1.抛出异常 throws 对应的异常 例如:
public static void main(String[] args) throws FileNotFoundException {
System.out.println("逻辑代码1");
showFile();
System.out.println("逻辑代码2");
}
public static void showFile() throws FileNotFoundException {
System.out.println("逻辑代码3");
FileInputStream fis = new FileInputStream(new File("a.txt"));
System.out.println("逻辑代码4");
}
//2.捕获异常 try{可能有异常的代码}catch(异常类型){处理异常}finally{//异常处理的统一出口,不管是否有异常、是否处理了异常都会执行}
public static void main(String[] args) {
int[] arr = null;//{10,20,30};
showArr(arr);
}
public static void showArr(int[] arr){
try {
System.out.println(arr[1]);
}catch (NullPointerException ex){
System.out.println("出现了空指针异常 开始处理");
System.out.println("已经处理");
}finally {
System.out.println("处理结束");
}
System.out.println("逻辑代码1 ");
System.out.println("逻辑代码2 ");
System.out.println("......");
}
四.自定义异常
使用场景:系统给的异常不能满足我们的应用的时候 可以采用自定义异常;
使用步骤:①创建一个类继承自Exception 或者 RuntimeException
②可以提供有参构造方法和无参构造方法
③在合适的时机进行使用
注意事项:当子类重写父类方法时,子类方法所声明的异常类型必须包含在父类方法所声明异常之内。实现接口也是如此;