java异常:
在程序运行过程中所发生一些错误事件,是一种用java代码的错误处理机制。
关键字
try:尝试
catch:捕获
finally:最终地
throw:抛(第一二人称)
throws:抛(第三人称)
java异常处理方式
1.自行处理
2.回避处理
语法:在代码块中
try{
//可能出现异常的代码
}catch(异常类型1 变量){
//处理异常代码
}catch(异常类型2 变量){
//处理异常代码
}finally{
//始终要执行的代码
}
规则:
1.try块必须跟catch或finally一起使用,try不能单独使用
2.catch块可以有多个,只能跟在try块后
3.catch(异常类型 变量) ,如果有多个catch,异常类型要从特殊到一般
4.finally块也必须跟在try块
5.try可以嵌套
6.如果调用方法时,方法抛出异常,编译器会检查异常的类型,如果是RuntimeException或其子类,可以不自行处理。如果是非RuntimeException的异常,必须显示处理(try...catch, throws),否则编译出错。
异常处理流程:
当try块中代码出现异常,异常以一个对象的形式抛出,catch块去捕获(可能有多个catch块),如果与catch中的异常类型匹配,就执行catch块中的代码。如果有finally块,无论是否有异常都会被执行。
注意:
RuntimeException类型异常及子类异常可以不用显示处理异常;
其它类型的异常必须显示处理异常,否则出错编译错误。
RuntimeException常见子类:
java异常:
在程序运行过程中所发生一些错误事件,是一种用java代码的错误处理机制。
关键字
try:尝试
catch:捕获
finally:最终地
throw:抛(第一二人称)
throws:抛(第三人称)
java异常处理方式
1.自行处理
2.回避处理
语法:在代码块中
try{
//可能出现异常的代码
}catch(异常类型1 变量){
//处理异常代码
}catch(异常类型2 变量){
//处理异常代码
}finally{
//始终要执行的代码
}
规则:
1.try块必须跟catch或finally一起使用,try不能单独使用
2.catch块可以有多个,只能跟在try块后
3.catch(异常类型 变量) ,如果有多个catch,异常类型要从特殊到一般
4.finally块也必须跟在try块
5.try可以嵌套
6.如果调用方法时,方法抛出异常,编译器会检查异常的类型,如果是RuntimeException或其子类,可以不自行处理。如果是非RuntimeException的异常,必须显示处理(try...catch, throws),否则编译出错。
异常处理流程:
当try块中代码出现异常,异常以一个对象的形式抛出,catch块去捕获(可能有多个catch块),如果与catch中的异常类型匹配,就执行catch块中的代码。如果有finally块,无论是否有异常都会被执行。
注意:
RuntimeException类型异常及子类异常可以不用显示处理异常;
其它类型的异常必须显示处理异常,否则出错编译错误。
RuntimeException常见子类:
ArithmeticException
当出现异常的运算条件时,抛出此异常。例如,一个整数"除以零"时,抛出此类的一个实例。
ArrayIndexOutOfBoundsException
用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
ArrayStoreException
试图将错误类型的对象存储到一个对象数组时抛出的异常。
ClassCastException
当试图将对象强制转换为不是实例的子类时,抛出该异常。
IllegalArgumentException
抛出的异常表明向方法传递了一个不合法或不正确的参数。
NullPointerException
当应用程序试图在需要对象的地方使用 null 时,抛出该异常
NumberFormatException
当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。
StringIndexOutOfBoundsException
此异常由 String 方法抛出,指示索引或者为负,或者超出字符串的大小。
/***************************************************
回避处理:告诉调用者,此处有异常
throws,throw
在代码中
throw 异常对象
throw new XxxxException();
在定义方法或构造器时,声明异常
方法名([参数列表]) throws 异常类型1,异常类型2 {
代码
}
/***************************************************
自定义异常
public class XxxxxException extends Exception{
public XxxxxException(){super();}
public XxxxxException(String message){
super(message);
}
}
规则:
1.命令名一般格式XxxxxException
2.这个类必须继承Exception或其子类
ArithmeticException
当出现异常的运算条件时,抛出此异常。例如,一个整数"除以零"时,抛出此类的一个实例。
ArrayIndexOutOfBoundsException
用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
ArrayStoreException
试图将错误类型的对象存储到一个对象数组时抛出的异常。
ClassCastException
当试图将对象强制转换为不是实例的子类时,抛出该异常。
IllegalArgumentException
抛出的异常表明向方法传递了一个不合法或不正确的参数。
NullPointerException
当应用程序试图在需要对象的地方使用 null 时,抛出该异常
NumberFormatException
当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。
StringIndexOutOfBoundsException
此异常由 String 方法抛出,指示索引或者为负,或者超出字符串的大小。
/***************************************************
回避处理:告诉调用者,此处有异常
throws,throw
在代码中
throw 异常对象
throw new XxxxException();
在定义方法或构造器时,声明异常
方法名([参数列表]) throws 异常类型1,异常类型2 {
代码
}
/***************************************************
自定义异常
public class XxxxxException extends Exception{
public XxxxxException(){super();}
public XxxxxException(String message){
super(message);
}
}
规则:
1.命令名一般格式XxxxxException
2.这个类必须继承Exception或其子类