(1)Java中的异常

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27706119/article/details/86100098

1.异常概述

什么是异常?代码在运行时期发生的问题就是异常。

在Java中,把异常信息封装成了一个类,当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置,原因等)。

1.1 异常的继承体系

Java中使用Exception类来描述异常。

public class Exception extends Throwable
Exception 类及其子类是形式Throwable指示合理的应用程序想要捕获的条件。 
异常类和任何不是RuntimeException的子类的子类都是检查异常 。 检查的异常需要在方法或构造函数的throws子句中声明,如果它们可以通过执行方法或构造函数抛出,并在方法或构造函数边界之外传播。 

继续观察,我们发现Exception有继承关系,它的父类是Throwable。Throwable是Java语言中所有错误或异常的父类,即祖宗类。

进入Throwable类,原来这个类已知子类有Error、异常两个。

Throwable:它是所有错误与异常的父类

           ※-----Error错误

           ※-----Exception编译期异常,进行编译Java程序时出现的问题

                     ※------RuntimeException运行期异常,Java程序运行过程中出现的问题

1.2 异常与错误的区别

【1】Error类是所有错误的父类,它和它的子类都被视为未经检查的异常,用于编译时检查异常。

程序在运行期间发生了某种错误,Error错误通常没有具体的处理方式,程序将会结束运行。

Error错误的发生往往都是系统级别的问题,都是JVM所在系统发生的,并反馈给JVM的。

我们无法针对处理,必须修正代码避免Error错误的产生。

【2】异常的子类简直不要太多了,实际开发中,异常的关注度较高

程序在编译、运行期间发生了某种异常,我们可以对异常进行具体的处理。

出现异常时,将异常处理掉,可以继续执行程序;若不处理异常,程序将会结束运行。

1.3 异常对象的产生原因和处理方式

A:异常对象的产生原因

代码:

//工具类
public class ArrayTools{
    //对给定的数组通过给定的角标获取元素。
    public static int getElement(int[] arr,int index)	{
        int element = arr[index];
        	return element;
    }
}
//测试类
public class ExceptionDemo2 {
    public static void main(String[] args) 	{
        int[] arr = {34,12,67};
        int num = ArrayTools.getElement(arr,4)
        System.out.println("num="+num);
        System.out.println("over");
    }
}

原因分析:

* a: 由于没找到4索引,导致运行时发生了异常。这个异常JVM认识:ArrayIndexOutOfBoundsException。
    这个异常Java本身有描述:异常的名称、异常的内容、异常的产生位置。
    java将这些信息直接封装到异常对象中。new ArrayIndexOutOfBoundsException(4);
* b:throw new ArrayIndexOutOfBoundsException(4);产生异常对象。JVM将产生的异常抛给调用者main()方法。
* c:main()方法接收到了数组索引越界异常对象。
    由于main()方法并没有进行处理异常,main()方法就会继续把异常抛给调用者JVM。
    当JVM收到异常后,将异常对象中的名称、异常内容、位置都显示在就控制台上。同时让程序立刻终止。

B:异常的处理方式

* a:JVM的默认处理方式
    * 把异常的名称,原因,位置等信息输出在控制台,同时会结束程序。
    * 一旦有异常发生,其后来的代码不能继续执行。
* b:解决程序中异常的手动方式
    * a):编写处理代码 try...catch...finally
    * b):抛出 throws


愿你就像早晨八九点钟的太阳,活力十足,永远年轻。

猜你喜欢

转载自blog.csdn.net/qq_27706119/article/details/86100098
今日推荐