第十一章 处理异常
编译错误是因为程序没有遵循语法规则,编译程序能发现错误的原因和位置;运行错误是因为程序执行时,运行环境发现了一个不能执行的操作;逻辑错误是因为程序没有按照预期的方案执行。
异常就是指程序运行时发生的错误;而异常处理就是对这些错误进行处理和控制。
1.异常分类
①
Error:该类描述系统内部错误。用户无法处理这种异常,如果出现了这种错误,用户只能终止程序
Exception:一般在外部环境与程序进行交互式发生这种错误。用户可以捕获这种错误并对异常进行处理
RuntimeException:该类描述了编程中的语法错误,如不合适的数据转换、访问一个越界数组元素等,都会出现这种异常
IOException:该类描述了输入/输出操作引起的一场
AWTException:该类描述了图形界面中的组件引起的异常
Throwable类
②Throwable类
java.lang包中的Throwable类是所有异常类的父类,其方法被所有子类继承。可以利用Throwable类中的实例方法获取异常的有用信息。
public string getMessage() 返回Throwable对象的详细信息
public string toString() 返回Throwable对象对异常的简要描述
public string getLocalizedMessage() 返回Throwable对象的本地化信息
public string getLocalizedMessage() 在控制台上打印Throwable对象封装的异常信息
2.异常处理机制
Java对异常的处理涉及4种操作:声明异常、抛出异常、捕获异常、处理异常。
对抛出异常和处理异常进行规范两种方法:
一是:把生命异常和抛出异常的操作封装在某个方法中,定义这种方法时在方法头中声明要抛出的异常类,在方法体中抛出相应的异常对象;第二种是,把捕获异常和处理异常封装在某个方法中。定义这种方法中,在方法体中捕获和处理异常对象。
①第一种方法的定义
在方法头中声明异常类:
public void myMethod() throws IOException //这里声明的异常类是:IOException
如果方法可能抛出多个异常,可以在关键字“throws”后添加多个异常类的列表,多个异常类之间用逗号分隔
在方法体中抛出异常对象:
Throw new TheException(); //抛出异常
或
TheException ex=new TheException();
Throw ex; //抛出异常
②第二种方法的定义
try-catch语句格式:
try-catch语句有一个try子句和多个catch子句组成。
try-catch语句执行原理:
try-catch语句是从上往下执行的。
1)当执行try子句时,如果没有抛出异常,则跳过所有的catch子句,结束整个try-catch语句执行。
2)如果try子句中的某条语句抛出一个异常,系统就会跳过try子句中的其余语句,开始为该异常搜索异常处理器。
3.finally子句
有时无论是否出现异常,我们都希望在方法中执行某些代码,在这种情况下,就应该使用finally子句来达到这一目的
try-catch-finally语句格式:
try子句中的某个语句抛出一个异常后,其后的代码不会被执行。无论try子句中的代码是否抛出异常,也无论catch自居的异常类型是否与所抛出的异常的类型一致,finally所指定的代码都要被执行,它提供了统一的出口。

浙公网安备 33010602011771号