Java编程基础——异常的捕获及处理
杨巍
yangwei@
异常的捕获及处理
Error Handling with Exceptions Java程序中的错误
语法错误——编译时
语义错误——运行时
出现各种各样的错误导致程序退出
异常Exception
异常
异常
导致程序中断运行的一种指令流
不处理异常,可能导致程序的中断执行
任何程序都可能存在问题
处理异常
增进程序的稳定性及效率
3
Java 编程基础
5
异常
在程序中使用异常处理
保证程序即使出现异常之后也可以正确执行,则必须进行异常的处理
Java 中所有的异常都以类和对象的形式存在
提供各种异常类外
用户可以根据需要定义自己的异常类
public class ExceptionDemo2 {
public static void main(String[] args) {
Java 编程基础
10练习
使用初始化参数输入两个数字,并进行除法操作
捕获并处理自己程序的异常ExceptionDemo3.java
异常
数组超出绑定异常
ng.ArrayIndexOutOfBoundsException 数字格式化异常
ng.NumberFormatException
算术异常
ng.ArithmeticException
ExceptionDemo4.java
11
异常
12
13
异常处理机制
异常处理机制
一旦产生异常,则首先产生一个异常类的实例化对象
在try 语句中对此异常对象进行捕获 产生的异常对象与catch 语句中的各个异常类型进行匹配,匹配成功则执行catch 中的代码
public class ExceptionDemo5 {
public static void main(String[] args) {
异常处理机制
Exception所捕获的异常范围大
数组超出绑定异常
ng.ArrayIndexOutOfBoundsException 数字格式化异常
ng.NumberFormatException
算术异常
ng.ArithmeticException
15
异常处理机制
使用Exception方便地捕获所有异常
可不可以直接使用Throwable?
不建议这样使用
Error子类——本身不需要程序处理
Exception子类——需要程序处理
如果有多个异常分别进行捕获,还是直接使用Exception捕获?
23
Exception 类与RuntimeException 类 Exception 类与RuntimeException 类
Exception 类在程序中必须使用try…catch 进行处理
RuntimeException 类可以不使用try…catch
进行处理,但是如果有异常,则异常将由
JVM 进行处理
最好使用try…catch 进行处理
24
方法覆写override 的异常抛出
子类方法抛出的异常范围不能大于父类
中方法抛出的异常的范围(子类可以不抛出异常)
If a superclass method throws multiple exceptions, the overriding method must throw a proper subset of exceptions
thrown by the overridden method
Java编程基础
——断言
杨巍yangwei@
断言
在JDK1.4之后,Java中增加了断言的功能
将断言看作是异常处理的一种高级形式 assertion功能提供了一种在代码中进行正确性检查的机制
肯定某一个结果的返回值是正确的,如果最
终结果的返回值是错误的,则通过断言检查
肯定会提示错误信息
public class AClass{
public void aMethod( int value ) {
Java编程基础
断言
注意
断言返回的是boolean值,但是不能将其作
为条件判断语句
通常用于开发和调试阶段,到了软件完成部署后就可以关闭
断言虽然有检查运行结果的功能,但是一般在开发中不提倡使用。