介绍
- 程序中异常:在程序执行过程中由于设计或设备原因导致的程序中断的异常现象叫做异常。
- 异常处理:Java编程语言使用异常处理机制为程序提供了异常处理的能力。
异常的分类
运行时异常
- 运行时异常:(RuntimeException)在编译过程不会发现(没有语法错误),但是在执行程序过程中,由于重大的
逻辑错误
导致的程序中断。- 所有的
RuntimeException
的子类包括RuntimeException都属于运行时异常- 常见的运行时异常:
- NullPointerException 空指针异常(一个对象没有初始化调用方法)
- ArrayIndexOutOfBoundsException 下标越界异常
- ClassCastException 类型转换异常(对象类型转换时)
- NumberFormatException 数字格式异常
- ArithmeticException 算术异常
编译时异常
- 编译异常或检查异常,在程序设计过程中,编译时就会被发现,但是执行时可能发生也可能不发生的异常,为了程序不报错可以执行,那么这一类异常必须进行相应的处理。
- Exception的子类包括Exception,除了RuntimeExcption之外都属于编译时异常。
Exception类
- 异常的父类。
Error类
- 错误,错误比较严重的问题,不属于异常,程序员无法处理。
- StackOverflowError 、OutOfMemoryError
异常处理
Java的异常处理是通过5个关键字来实现的:
- try:执行可能产生异常的代码
- catch:捕获异常 ,并处理
- finally:无论是否发生异常,代码总能执行
- 不会执行的情况:退出Java虚拟机或System.exit(); 0正常退出,非0非正常退出
- 作用:用来释放资源
- throw:手动抛出异常
- throws:声明方法可能要抛出的各种异常
自定义异常类
- 创建自定义异常,通常继承自
Exception
或其子类
,习惯上包装一下父类的构造方法。
自定义
非运行时异常
- 定义一个类,继承
Exception
类- 在此类中定义
构造方法
,调用父类中的带字符串参数的构造方法(此字符串表示对异常的描述)- 使用异常
自定义
运行时异常
- 定义一个类,继承
RuntimeException
类- 在此类中定义
构造方法
,调用父类中的带字符串参数的构造方法(此字符串表示对异常的描述)- 使用异常