Java异常&处理异常


Java异常&处理异常

一、什么是异常

在Java程序运行时,会发生意料之外的情况,这种情况被称为例外或者异常,异常的出现,往往会中断程序的运行。在Java中,异常也是一个对象,当程序发生异常时,就会出现一个异常对象,其中包括异常类型、异常信息、异常原因等信息。

举个例子:当你穿上鞋,走路时发现左右脚穿反了,这时候,就是发生了异常,当然,这个异常不是致命的,你可以选择继续这样穿下去,继续走路,但是这样可能会引发其他严重的后果。大多数时候,我们会中断当前的事情,脱下鞋子,换过来。

二、异常分类

1. 编译时异常

当我们编写Java代码时,编译器会对代码进行检查,如果有异常则不能通过编译,所以此类异常一旦出现,就必须处理。

2. 运行时异常

运行时异常,即编译时不会报错,在运行时发生的异常。此类异常不强制处理,但是就像上面举的“穿鞋”的例子,假如不处理,可能会引发其他更严重的错误。

三、 处理办法

无论是编译时异常还是运行时异常,理论上都需要我们去处理,假如不处理异常,JVM的默认处理办法是,在异常发生的位置终止程序,然后输出异常的信息。

1. throws

使用 throws 抛出异常,由JVM处理,即以默认方式处理异常:在出现异常的位置终止异常;

2. thy…catch…

使用 try...catch.. 环绕:

try{
    // 出现异常的代码
};catch (异常类1 异常对象){
    // 处理异常
};catch (异常类2 异常对象){
    // 处理异常
};...
 ...
 final{
    // 
};

将出现或者可能出现异常的代码放在 try 后面的大括号中,在下方的 catch 的小括号中,即catch的参数为一个异常对象,在之后的大括号中,则是出现此类异常时的处理方法。

try...catch... 这里有些类似与 if...else... 语句,try 后面的代买可以看作 if 语句的条件,如果发生异常,则到下方寻找对应的异常类型,执行对应的处理办法:

// 类比成下列代码
if(发生了异常类型1){
    // 处理办法1
};else if(发生了异常类型2){
    // 处理办法2
};else if(发生了异常类型3){
    // 处理办法3
};......

3. 二者结合

throwstry...catch... 配合使用:

在可能出现异常的方法名后使用 throws 抛出异常,在此方法处不处理异常,调用者在调用此方法时,需要集中捕获处理异常

如:

class Fun {
    public void fun() throws RuntimeException {
        int a = 5 / 0;
    };
};

public class Main {
    public static void main(String[] args){
        Fun fun = new Fun();
        try {
            fun.fun();
        }; catch (RuntimeException e) {
            e.printStackTrace();
            System.out.println("处理异常!");
        };
    };
};

在上面的例子中,Fun 类并未处理异常,而是使用 throws 将异常抛出,而在下方调用时,则需要使用 try...catch... 环绕,捕获处理异常。


文章作者: Cikian
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Cikian !
评论
  目录