Java基础知识8-异常处理

作者: 我相信你爱过gg | 来源:发表于2016-12-22 00:13 被阅读60次
配图

异常概述

异常是运行是在代码序列中引起的非正常情况.换句话说,异常是运行时错误.
Java异常是用来描述在一段代码中发生的异常情况(也就是错误)的对象.当出现引起异常的情况时,就会创建用来表示异常的对象,并在引起错误的方法中抛出异常对象.
方法可以选择自己处理异常,也可以继续传递异常.

异常类型

所有异常类型都是内置类Throwable的子类.Throwable位于异常类层次中的顶部.紧随Throwable之下的两个子类,它们将异常分为两个不同的分支.
一个分支是Exception类,这个类既可以用于用户程序应当捕获的异常情况,也可以用于创建自定义异常类型的子类.Exception有一个重要的子类,名为RuntimeException.
另一个分支是Error类,该类定义了在常规环境下不希望有程序捕获的异常.Error类型的异常有Java运行时系统使用,指运行环境本身出现了某些错误.

未捕获的异常

int d = 0;
int a = 42 / d;

上述语句执行时,系统检测到试图除以零时,它会构造一个新的异常对象,然后抛出异常java.lang.ArithmeticException: / by zero如果没有即时捕获处理,程序会立即终止运行.

捕获异常

使用try和catch来捕获异常.

try {
   int d = 0;
   int a = 42 / d;
} catch (Exception e){
   System.out.println("程序出现了异常");
}

这个时候你就会发现,程序并没有终止运行,而是执行了catch代码中的代码.

自己处理异常有两个优点:
1.允许修复错误.
2.阻止程序自动终止.

多条catch字句

try {
    int d = 0;
    int a = 42 / d;
} catch (Exception e){
    System.out.println("Exception");
} catch (ArithmeticException ae){
    System.out.println("ArithmeticException");
}

上面我只是举了一个例子,如果程序先捕获了第一个catch的异常,那么程序不回再去捕获第二个catch的异常,以此类推.
我这是在举例子,因为Exception是所有异常的父类所以绝对不可能后捕获ArithmeticException异常的.

手动抛出异常

使用throw关键字.

try {
   throw new ArithmeticException();
}  catch (ArithmeticException ae){
   System.out.println("ArithmeticException");
}

上述代码中我们手动抛出了ArithmeticException异常,而Java中所有异常都是对象.所以我们要创建ArithmeticException对象并抛出.

引发异常但不处理

使用throws关键字

public void testMethod() throws ArithmeticException {

}

上述代码我们的这个方法执行的时候发生了异常,但是我们不做处理,并且将异常向上抛(抛给调用此方法的方法).

如果我们的方法中使用了自定义异常类,那么我们也需要向上抛出.

自定义异常类

class TestExcption extends Exception{
    public TestExcption(){}
    public TestExcption(String info){
        super(info);
    }
}

throw和throws的区别

1.throws使用在函数上.
   throw使用在函数内.
2.throws抛出的是异常类,可以抛出多个,用逗号隔开.
   throw抛出的是异常对象.

finally

使用finally可以创建一个代码块,改代码块会在执行try/catch代码块之后,并在执行try/catch代码块后面的代码之前执行.也就是说 不管是否有异常抛出,都会执行finally代码块.

try{
            
} catch (Exception e) {
            
} finally {
            
}

相关文章

  • Java基础知识8-异常处理

    异常概述 异常是运行是在代码序列中引起的非正常情况.换句话说,异常是运行时错误.Java异常是用来描述在一段代码中...

  • 怎么优雅的处理Java异常?

    0 本文介绍 本文仅按照业务系统开发角度描述异常的一些处理看法.不涉及java的异常基础知识,可以自行查阅《Jav...

  • Java- 异常处理

    Java- 异常处理 异常处理能够使一个方法给它的调用者抛出一个异常。 Java异常是派生自 java.lang....

  • JNI异常

    JNI异常 JNI允许native方法引发任意Java异常。native代码还可以处理未解决的Java异常。未处理...

  • 2022-04-20 Springboot基础知识(12)- 默

    Springboot基础知识(12)- 默认异常处理、全局异常处理 查看内容请点击下面的链接: https://w...

  • Java 异常分析

    本文是对以下内容的分析: Java异常设计 Java 异常分类 Java异常可以告诉什么问题 Java异常处理最佳...

  • Java异常处理-检查性异常、非检查性异常、Error

    一、Java异常处理详解 Java异常处理-笔记中的@doublefan讲解得非常通熟易懂 二、检查型异常和非检查...

  • java异常---异常处理

    一、重点知识 IDEA创建配置文件file目录下选择Resource Bundle,直接输入文件名创建就好了 记得...

  • Java基础系列-Exception异常处理

    原创文章,转载请标注出处:《Java基础系列-Exception异常处理》 一、概述 Java代码中的异常处理是非...

  • 04- JAVA异常

    在JAVA中异常就是一个类,产生异常就是创建异常对象并抛出一个异常对象。JAVA处理异常的方式是中断处理。参考:j...

网友评论

    本文标题:Java基础知识8-异常处理

    本文链接:https://www.haomeiwen.com/subject/jehcvttx.html