java基础-异常

分类: Java

1.异常分类

java执行过程中所发生的异常事件可分为两类(开发过程中的语法错误和逻辑错误不是异常)

1.1Error

java虚拟机无法解决的严重问题。比如:jvm系统内部错误,资源耗尽等严重情况。

1.2Exception

其他编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。比如:空指针访问;试图读取不存在的文件,网络连接中断。
当执行一个程序时,如果出现异常,那么异常之后的代码就不再执行。

类的继承关系如下,都是Object类下Throwable

java.lang.Object

|---Throwable

|---Erorr:错误,程序中不进行处理
|---Exception:异常,要求在编写程序时就要考虑到对这些异常的处理

|---编译时异常:在编译期间会出现的异常(执行javac.exe命令时,出现异常)
|---运行时异常:在运行期间出现的异常(执行java.exe命令时,出现异常)

捕获错误最理想的是在编译期间,有的错误只有在运行时才会发生,比如除数未0,数组下标越界等。

分类:编译时异常运行时异常

2.常见的运行时异常

数组下标越界异常ArrayIndexOutOfBoundsException
算术异常ArithmeticException
类型转换异常ClassCastException
空指针异常NullPointerException

3.异常处理机制

java提供的是异常处理的抓抛模型
3.1"抛":当我们执行代码时,一旦出现异常,就会在异常的代码处生成一个对应的异常类型的对象,并将此对象抛出。
》一旦抛出此异常的对象,那么程序就会终止执行
》此异常类的对象抛给方法的调用者
3.2"抓":抓住上一步抛出来的异常类的对象,java提供了两种方式来处理一个异常类的对象:
》1try catch finally
finally是可选的,catch对异常对象的处理
--getMessage();
--printStackTrace();
》2throws+异常类型, 在方法处声明,显式抛出,由调用者去处理异常, public static void method1() throws FileNotFoundException,IOException

对于运行时异常来说,可以不显式的进行处理。
对于编译时异常来说,必须要显式的进行处理。

4.手动抛出一个异常

throw new RuntimeException("处理异常");
如果是抛出Exception,必须要显式的处理。

5.自定义异常类

5.1自定义的异常类继承先有的异常类

5.2提供一个系列号,提供几个重载的构造器

子类重写的父类的方法,其抛出的异常类型只能是被重写的方法的异常类的子类或异常类型一样。

1.jpg

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注