面向对象
第七章,异常
1,什么是异常
- 异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
2,异常处理
- java编程语言使用异常处理机制为程序提供了错误处理的能力
程序中预先设置好对付异常的处理方法->(程序运行)异常->(对异常进行处理)
->(处理完毕,程序继续运行)
- java如何进行异常处理
- Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws
- Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws
3,try-catch块
-
使用try-catch块捕获异常
-
情况一,正常
public void method(){ try { // 代码段(此处不会产生异常) } catch (异常类型 ex) { // 对异常进行处理的代码段 } // 代码段 }
-
情况二,出现异常
public void method(){ try { // 代码段 1 // 产生异常的代码段 2 // 代码段 3 } catch (异常类型 ex) { // 对异常进行处理的代码段4 } // 代码段5 }
-
异常是一种特殊的对象,类型为java.lang.Exception或其子类
-
printStackTrace()的堆栈跟踪功能显示出程序运行到当前类的执行流程
java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:840) at java.util.Scanner.next(Scanner.java:1461) at java.util.Scanner.nextInt(Scanner.java:2091) at java.util.Scanner.nextInt(Scanner.java:2050) at cn.jbit.exception.Test3.main(Test3.java:15) InputMismatchException:异常类型 main:在main方法中抛出了异常 java:15 :出现异常的位置
-
-
情况三,异常类型不匹配
public void method(){ try { // 代码段 1 // 产生异常的代码段 2 // 代码段 3 } catch (异常类型 ex) { // 对异常进行处理的代码段4 } // 代码段5 } 异常类型不匹配,程序中断运行
-
-
常见的异常类型
4,try-catch-finally
-
在try-catch块后加入finally块
-
是否发生异常都执行
-
不执行的唯一情况
-
-
存在return的try-catch代码块
public void method(){ try { // 代码段 1 // 产生异常的代码段 2 } catch (异常类型 ex) { // 对异常进行处理的代码段3 return; }finally{ // 代码段 4 } }
-
多重catch块
- 排列catch 语句的顺序:先子类后父类
- 发生异常时按顺序逐个匹配
- 只执行第一个与异常类型匹配的catch语句
5,声明异常
- 声明异常的方式
- 方式一:调用者处理异常
- 方式二:调用者继续声明异常
- main()方法声明的异常由java虚拟机处理
6,抛出异常
-
除了系统自动抛出异常外,有些问题需要程序员自行抛出异常
-
使用throw抛出异常
-
throw与throws
-
7,自定义异常
-
当jdk中的异常类型不能满足程序的需要时,可以自定义异常类
-
使用自定义异常的步骤
8,异常处理原则
- 异常处理与性能
- 异常只能用于非正常情况
- 不要将过于庞大的代码块放在try中
- 在catch中指定具体的异常类型
- 需要对捕获的异常做处理