一、Java 常见异常
在 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 - catch 语句块捕获并处理,否则在方法的声明处通过 throw 关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
( 4 ) :在出现异常方法的调用者中捕获并处理异常。
eg : 创建自定义异常。在项目中创建类 MyException ,该类继承 Exception 。
public class MyException extends Exception{ //创建自定义异常,继承 Exception 类
public MyException(String ErrorMessage){ //构造方法
super(ErrorMessage); //父类构造方法
}
}
字符串 ErrorMessafe 是要输出的错误信息。若想抛出用户自定义的异常对象,要使用 throw 关键字。
eg : 在项目中创建类 Tram,该类中创建一个带有 int 型参数的方法 avg() ,该方法用来检查参数是否小于 0 或大于 100 。如果参数小于 0 或大于 100 ,则通过 thorw 关键字抛出一个 MyException 异常对象,并在 main() 方法中捕获该异常。
package com.myException;
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, 150); //调用 avg() 方法
System.out.println(result); //将 avg() 方法的返回值输出
} catch (Exception e) {
System.out.println(e); //输出异常信息
}
}
}
class MyException extends Exception{ //创建自定义异常,继承 Exception 类
public MyException(String ErrorMessage) { //构造方法
super(ErrorMessage); //父类构造方法
}
}
运行结果为 :
com.myException.MyException: 数值太大了