JAVA异常处理
java错误分为两大类异常
1.检查性时异常
用户错误或者问题引起来的异常,这是程序员无法预见的,例如要打开一个不存在的文件时,一个异常就发生了,这些问题在编译时
不能被简单的忽略。
2.运行时异常
运行时异常是可能被程序员避免的异常,与检查时异常相反,运行时异常可以在编译时被忽略。
3:错误
错误不是异常,而是脱离程序员的控制,错误在代码中通常是被忽略,
———————————————————————————————————————————————————————————
Exception类的层次
所有的异常类都是从java.lang.Exception类继承的子类.
Exception类是Throwable类的子类,除了Exception类外,Throwable还有一个子类Error。
异常类主要有两个主要的子类,IOException和RuntimeException类
—————————————————————————————————————————————————————————————
JAVA内置类异常
java语言定义了一些异常类在java.lang包中,由于java.lang包是默认加载到,所有的java程序的,所以大部分从运行时异常类继承而来的异常都可以直接使用。
java根据各个类库也定义一些其他的异常,下列出几个java的编译时常见异常。
异常 | 描述 |
| ArithmeticExcetion | 当初出现异常运算时,抛出异常,例如,一个数除以零,便会抛出此类异常 |
| ArraryIndexOutofBoundsException | 当非法索引访问数组时抛出的异常,如果索引为负或者大于等于数组大小,则该索引为非法索引 |
| ClassCastException | 当试图将对象强转为不是实例的子类时,抛出此异常 |
| NumberFomartException | 当试图将字符串转换成一中数值类型,不能转换时,抛出此异常。 |
| NullPointerException | 当对象试图在需要对象的时候使用NULL,抛出该异常。 |
————————————————————————————————————————————————————————————————————————————
异常方法
下面列表是Throwable类的主要方法
方法及其说明:
1:public String getMassage()
返回关于发生异常的详细信息,
2:public Throwable getCause()
返回Throwable对象代表的异常原因
3:public void printStackTrace()
打印toString()结果和栈层次到System.err,输出流错误。
————————————————————————————————————————————————————————————————————————————
捕获异常
使用try和catch关键字可以捕获异常,这个代码块要放在异常可能发生的地方。
try/catch代码块的代码称为保护代码,语法如下:
try
{
//程序代码
}catch(Exceptionname e)
{
//catch 块,捕获的异常类型,包含要捕获异常类型的声明
}
异常代码
public static void main(String[] args) {
System.out.println("main begin");
try {
int n1 = Integer.parseInt(args[0]);
int n2 = Integer.parseInt(args[1]);
int a=n1/n2;
System.out.println(a);
return;
}catch (ArrayIndexOutOfBoundsException e){
e.printStackTrace();
}catch (NumberFormatException e){
System.out.println(e.getMessage());
}catch (ArithmeticException e){
System.out.println(e.getMessage());
}
catch (Exception e){
System.out.println("其他异常"+e.getMessage());
}finally {
System.out.println("释放资源");
}
System.out.println("核心代码");当只输入一个整数时出现如下代码:
直接跳过,异常代码,输出下面的代码。牺牲一些代码。保护核心代码。
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————
final关键字
主要创建在try代码后面执行的代码块,无论什么情况,finally代码块中的代码总会执行,作用是可以用来释放资源。
注意下面事项:
catch不能独立try存在。
在try/catch的finally并非必须添加的。
try后面不能既没有catch也没finally。
try,catch,finally块之间不能添加任何代码。
—————————————————————————————————————————————————————————————————
声明自定义异常
在java中可以自定义异常,但必须满足
所有的异常都必须是Throwable的子类。
所以当写一个检查性的异常类,则需要继承Exception.(编译时异常类)
写运行时异常类继承RunTimeException类






浙公网安备 33010602011771号