一、常见的异常
Java中提供了一些异常用来描述经常发生的错误,其中,有的需要程序员进行捕获处理或声明抛出,有的是由Java虚拟机自动进行捕获处理的。常见异常类如下表所示:
异常类 | 说明 |
---|---|
ClassCastException | 类型转换异常 |
ClassNotFoundException | 未找到相应类异常 |
ArithmeticException | 算术异常 |
ArrayIndexOutOfBoundsException | 数组下标越界异常 |
ArrayStoreException | 数组中包含不兼容的值抛出的异常 |
SQLException | 操作数据库异常类 |
NullPointerException | 空指针异常 |
NoSuchFieldException | 字段未找到异常 |
NoSuchMethodException | 方法未找到抛出的异常 |
NumberFormatException | 字符串转换为数字抛出的异常 |
NegativeArraySizeException | 数组元素个数为负数抛出的异常 |
StringIndexOutOfBoundsException | 字符串索引超出范围抛出的异常 |
IOException | 输入输出异常 |
IllegalAccessException | 不允许访问其类异常 |
InstantiationException | 当应用程序试图使用Class类中的NewInstance()方法创建一个类的实例, 而指定的类对象无法被实例化,抛出该异常 |
EOFException | 文件已结束异常 |
FileNotFoundException | 文件未找到异常 |
二、自定义异常
使用Java内置的异常类可以描述在编程时出现的大部分异常情况,除此之外,用户只需继承Exception类即可自定义异常类,在程序中使用自定义异常类,大致分为以下几个步骤:
1、创建自定义异常类
2、在方法中通过throw关键字抛出异常对象
3、如果在当前抛出异常的方法中处理异常,可以使用try-catvh语句块捕获并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作
4、在出现异常方法的调用者中捕获并处理异常
示例如下:
public class MyException extends Exception { //创建自定义异常,继承Exception
public MyException(String ErrorMessage) { //构造方法
super(ErrorMessage); //父类构造方法
}
}
字符串ErrorMessage是要输出的错误信息。若想抛出用户自定义的异常对象,要使用throw关键字。在下列示例中创建了Tran类,该类中创建一个带有int型参数的方法avg(),该方法用来检查参数是否小于0或大于100.如果参数小于0或大于100,则通过throw关键字抛出一个MyException异常对象,并在main()方法中捕捉该异常:
public class Tran {
//定义方法,抛出异常
static int avg(int number1,int number2) throws MyException{
if(number1<0||number2<0) { //判断方法中参数是否满足指定条件
throw new MyException("不可以使用负数"); //错误信息
}
if(number1>100||number2>100) { //判断方法中参数是否满足指定条件
throw new MyException("数值太大了"); //错误信息
}
return (number1+number2)/2; //将参数的平均值返回
}
public static void main(String args[]) {
try { //try代码块处理肯出现异常的代码
int result = avg(102,89); //调用avg()方法
System.out.println(result); //将avg()方法的返回值输出
}catch(MyException e) {
System.out.println(e); //输出异常信息
}
}
}
/*输出结果如下:
test.MyException: 数值太大了
*/