定义:运行期间出现的错误,而不是编译时的错误
例如:
--打开一个不存在的文件
--网络连接中断
--操作数组越界等
异常大抵分为两类:
1.检查性异常(非RuntimeException):
若系统运行时可能产生该类异常,则必须写出相应的处理代码,否则无法通
过编译
--例如:整数除以0,数组越界等
2.非检查异常(RuntimeException):
若系统运行时可能产生该类异常,则不必在程序中声明对该类异常的处理,
就可以编译执行
--例如:无法找到文件,空指针等
—异常处理
--自行处理:可能引发异常的语句封入在
try
块内,而处理异常
的相应语句则封入在
catch
块内
每次try块有异常抛出,系统会试着从上到下往每个catch块中传参,直
到遇到一个类型匹配的catch块为止。
try {
//需要捕捉异常的语句
}
catch (异常的类型 e//变量名) {
//捕捉到异常后处理异常的语句,可以是在控制台输出,可以是在日志中输出
}
--回避异常:在方法声明中包含 throws 子句,通知潜在调用者,
如果发生了异常,必须由调用者处理。
public static void 方法名() throws (异常的类型,可以写多个用,分隔开){
//有异常的语句
}
JDK 7中,单个catch块可以处理多个异常类型
try {
//需要捕捉异常的语句
}
catch (异常的类型|异常的类型|异常的类型(用|隔开)) {
//捕捉到异常后处理异常的语句,可以是在控制台输出,可以是在日志中输出
}