java异常的捕获及处理

版权声明:本文为博主原创文章,未经博主允许不得转载。多多评论,与博主一起学习编程。 https://blog.csdn.net/Roobert_Chao/article/details/78659749

异常的捕获及处理

1.try……catch……
2.throws
3.throw
4.assert 断言

First、什么是异常?

  • 异常是导致一个程序中断的指令流,一旦出现之后程序就将立即退出。
public class ExpTest{
    public static void main(String args[]){
        int x = 10;
        int y = 0;
        System.out.println("计算开始。") ;
        System.out.println("计算结果是:"+(x/y));
        System.out.println("计算结束。");
    }
}

程序的运行结果:

/*计算开始。
 *Exception in thread "main"                          *java.lang.ArithmeticException: / by zero
 *at ExpDemo01.main(ExpDemo01.java:6)
 */

产生了异常之后,在异常语句之后的代码将不再执行,直接退出程序。

要是程序继续进行,就需要异常语句的处理了。

Second、处理异常?

在Java中使用如下的语法进行异常的处理:

  • 一个 try 语句之后跟上了多个 catch 语句,表示可以处理多种异常。

  • 捕获范围小的异常要放在捕获范围大的异常之前。

  • 大部分的异常都直接使用Exception接收即可。

try{
    可能出现异常的语句;
}catch(异常类型 异常对象){
    处理异常;
}catch(异常类型 异常对象){
    处理异常;
}...
finally{
    异常处理的统一出口;

    //不管是否有异常,都执行此finally语句!
}

以算术异常为例,观察其继承的结构:

java.lang.Object
    java.lang.Throwable
        java.lang.Exception【程序中】
            java.lang.RuntimeException【控制台抛出异常console】
                java.lang.ArithmeticException

Throwable有两个子类:

Throwable:
    Error:表示"JVM错误",还没有运行到程序上,所以一般不去处理。
    Exception:是在"程序中"发生的异常,一般都需要进行处理。
    //肯定所有的异常类的操作都可以通过Exception进行接收。

Third、异常的处理流程

a、异常产生之后,实际上都会自动生成一个异常类的【实例化对象】,如果此时编写了异常处理语句的话,则进行异常的处理,如果没有的话,则交给 JVM 进行处理。

b、使用了 try 捕获异常之后,将自动与 catch 中的异常类型相匹配,如果匹配成功,则表示可以使用此 catch处理异常,如果都没有匹配成功的,则不能处理。

c、程序中不管是否出现了异常,如果存在了 finally语句,都要执行此语句的代码。

4、throws

  • throws关键字主要是用在方法的声明上,表示一个方法不处理异常,而交给被调用处进行处理。

  • 在主方法上使用的话就表示一旦出现了异常之后,继续向上抛,表示由JVM进行处理了。

  • 实际上默认情况下的所有异常都是依靠JVM进行处理的。

4、throw(少一个s)

  • throw关键字是在程序中"人为的抛出"一个异常对象。
    throw new Exception("认为抛出的!") ;

用一个程序去证明。

public class ExpTest01{
    public static void main(String args[]) {
        try{
            throw new Exception("认为抛出的!") ;
        }catch(Exception e){
            e.printStackTrace() ;
        }
    }
}

5、RuntimeException和Exception

1、RuntimeException:
- 抛出的异常是RuntimeException类或者是它的子类的话,那么可以不用进行异常处理的操作。
- 如果不做任何异常处理的话,则一旦出现了异常之后将交给被调用处进行处理。
2、两者的区别:

  • Exception必须处理,而RuntimeException可以不用处理。

6、异常处理的标准格式。

try…catch…finally、throw、throws实际上在开发中是要一起使用。
- throw直接抛出异常,无需自己处理,有程序以外的代码处理,至于什么异常开发者也不会知道,如果没有代码处理抛出的异常,程序将自动结束。throw是用在方法体内,抛出后由程序外的代码处理。throw 则是抛出了一些具体的异常——一些已知的异常,执行throw代码就是抛出异常。

  • try catch可以捕获抛出的异常,并显示出来,开发者可以很明显的了解自己代码的异常。
  • throws是用在异常说明之后,若存在异常,将由方法的调用者执行;
    throws可能存在异常需要抛出,强调可能。

7、assert关键字(断言)

  • 一般assert都在程序中判断某条语句一定是期望的计算结果。

猜你喜欢

转载自blog.csdn.net/Roobert_Chao/article/details/78659749