异常
什么是异常处理?
当程序出现异常时,将程序控制权交由异常处理机制来处理。
程序错误的分类?
1)编译错误;
2)运行时错误;
3)逻辑错误;
java异常继承体系
详图如下:
异常处理方式
1.捕捉异常
public static void main(String[] args) { FileInputStream fis = null; try{ fis = new FileInputStream("C:\Users\menbbo\Desktop\a.txt"); }catch (IOException e){ e.printStackTrace(); }finally { try{ if(fis!=null){ fis.close(); } }catch (IOException e){ e.printStackTrace(); } } } }
2.声明异常
public static void main(String[] args) throws IOException{ FileInputStream fis = new FileInputStream("C:\Users\menbbo\Desktop\UnZipController.java"); }
异常与方法重写
子类异常声明的范围不能超过父类声明的范围。
1.父类没有声明异常,子类也不能声明。
2.子类重写的方法中声明的异常类,需要与父类被重写方法中声明的异常类保持一致,或者是父类被重写方法中声明的异常类的子类。
自定义异常
1.为什么要自定义异常?
1)封装
2)快速定位
2.自定义异常类步骤
1)创建类
2)继承Exception或者Exception的子类
3)重写构造方法
public class CustomizeException extends Exception{ public CustomizeException(){}; public CustomizeException(String message){ System.out.println(message); } }
手动抛出异常
手动抛出异常的步骤:
1)找到一个合适的异常类
2)创建这个异常类的对象
3)抛出这个对象
public void fun()throws IOException{ throw new IOException(); }
访问异常信息
堆栈轨迹(stack trace):方法调用过程的列表。
finally回收资源
1.I/O属于物理资源
2.java垃圾回收机制不会回收物理资源,垃圾回收机制只能回收堆内存中对象所占用的内存。
自动关闭资源
多异常捕获
异常嵌套
Catch和throw同时使用
将原始的异常信息保存下来,返还给调用者。