JavaSE - 异常

目录

异常

一. 常见的异常

1. 算数异常(ArithmeticException)

2. 数组越界异常(ArrayIndexOutOfBoundException)

3. 空指针异常(NullPointerException)

4. 输入不匹配异常(InputMismatchException)

5. 类型转换异常(ClassCastException)

二. 异常的分类

三. 异常的处理

1. 异常的捕获

2. 异常的抛出

3. 异常的声明

4. finally

四. 自定义异常类


异常

程序执行过程中发生的不正常行为称为异常

一. 常见的异常

1. 算数异常(ArithmeticException)

JavaSE - 异常_第1张图片

2. 数组越界异常(ArrayIndexOutOfBoundException)

JavaSE - 异常_第2张图片 

3. 空指针异常(NullPointerException)

JavaSE - 异常_第3张图片

4. 输入不匹配异常(InputMismatchException)

JavaSE - 异常_第4张图片

5. 类型转换异常(ClassCastException)

JavaSE - 异常_第5张图片

二. 异常的分类

异常分为编译时异常(受查异常)和运行时异常(非受查异常)。

编译的时候报的异常叫做编译时异常,在运行的时候报的异常叫做运行时异常。

JavaSE - 异常_第6张图片 

1. Error:错误。Java虚拟机无法解决的严重问题,比如:JVM的内部错误、资源耗尽等。典型代表: StackOverflowError和OutOfMemoryError,一旦发生回力乏术。必须由程序员自己解决。

2. Exception:异常。分为编译时异常和运行时异常。

3. 编译时出现的语法性错误不叫编译时异常,比如你单词拼错了。

4. 编译时异常必须处理,否则程序无法通过编译。

三. 异常的处理

1. 异常的捕获

try-catch捕获并处理

 try{
      可能出现异常的代码
            
 }catch (你要捕捉的异常){
      对捕捉到的异常进行处理
            
 }

 try中放可能出现异常的代码,catch捕捉可能出现的异常然后进行处理。

JavaSE - 异常_第7张图片

异常被处理,程序可以继续执行后面代码。

异常如果不被捕捉处理,最终都会交给JVM处理,程序会异常终止。

2. 异常的抛出

上面捕获的异常都是程序编译或运行时,自己抛出的。

那么我们能不能通过代码,主动抛出异常?

throw new xxxException(“异常产生的原因”);

 

JavaSE - 异常_第8张图片

主动抛出异常并处理了。如果不处理,程序就会异常终止,不会往下执行。

3. 异常的声明

当方法抛出编译时异常时,用户不想处理该异常,此时就可以借助throws将异常抛给方法的调用者来处理。即当前方法不处理异常,提醒方法的调用者处理异常。

throws xxxException,xxxException

声明异常并不会处理异常,还是需要捕捉并处理的。如下:

JavaSE - 异常_第9张图片

确实声明了异常,但出现异常不处理还是会交给JVM,程序终止。

进行处理:

JavaSE - 异常_第10张图片

4. finally

程序无论发不发生异常 ,finally中的内容一定会被执行。一般用来放回收资源的一些代码。

JavaSE - 异常_第11张图片

try后面还可以跟小括号(),里面放用到的资源。作用:无论 try 块是正常结束还是异常结束,这个资源都会被自动关闭。

JavaSE - 异常_第12张图片

不需要写scanner.close()了。 

四. 自定义异常类

自定义一个异常类,继承Exception默认就是编译时异常,继承RuntimeException就是运行时异常。如下图就是一个自定义异常:

JavaSE - 异常_第13张图片

 JavaSE - 异常_第14张图片

JavaSE - 异常_第15张图片 

JavaSE - 异常_第16张图片 

JavaSE - 异常_第17张图片 

 

你可能感兴趣的:(JavaSE,java,开发语言)