Java中的异常体系

概述

Java中的所有异常都来自顶级父类Throwable。

Throwable下有两个子类Exception和Error。

Error是程序无法处理的错误,一旦出现这个错误,则程序将被迫停止运行。

Exception不会导致程序停止,又分为两个部RunTimeException运行时异常和CheckedException检查异常。

RunTimeException常常发生在程序运行过程中,会导致程序当前线程执行失败。CheckedException常常发生在程序编译过程中,会导致程序编译不通过。

1

Java异常的分类和类结构图

Java标准裤内建了一些通用的异常,这些类以Throwable为顶层父类。

Throwable又派生出Error类和Exception类。

错误:Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,程序员应该关注Exception为父类的分支下的各种异常类。

异常:Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心。

在这里插入图片描述
总体上我们根据Javac对异常的处理要求,将异常类分为2类。

非检查异常(unckecked exception):

Error 和 RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果愿意,我们可以编写代码处理(使用try…catch…finally)这样的异常,也可以不处理。对于这些异常,我们应该修正代码,而不是去通过异常处理器处理 。这样的异常发生的原因多半是代码写的有问题。如除0错误ArithmeticException,错误的强制类型转换错误ClassCastException,数组索引越界ArrayIndexOutOfBoundsException,使用了空对象NullPointerException等等。

检查异常(checked exception):

除了Error 和 RuntimeException的其它异常。javac强制要求程序员为这样的异常做预备处理工作(使用try…catch…finally或者throws)。在方法中要么用try-catch语句捕获它并处理,要么用throws子句声明抛出它,否则编译不会通过。这样的异常一般是由程序的运行环境导致的。因为程序可能被运行在各种未知的环境下,而程序员无法干预用户如何使用他编写的程序,于是程序员就应该为这样的异常时刻准备着。如SQLException , IOException,ClassNotFoundException 等。

2

一、简介

Java异常可以分为ErrorException两大类型,Error类型的异常无法使用程序处理,通常为jvm虚拟机本身问题,如系统崩溃、虚拟机错误、动态链接失败等,这些异常无法被捕获,一般的所谓的异常处理是指Excepiton类型异常处理。Exception可以分为运行时异常RuntimeException和非运行时异常(如IOException等),异常层次结构图,如下图所示

图1-1

Java编译器要求Java程序必须捕获或声明所有的非运行时异常,对运行时异常可以不做处理,虽然编译对运行时异常不要求处理,但实际开发中为了程序的健壮性,还是需要处理的

常见的运行时异常RuntimeException主要有以下几种:

ArithmeticException:数学计算异常

NullPointerException:空指针异常

NegativeArraySizeException:负数组长度异常

ArrayOutOfBoundsException:数组索引越界异常

ClassNotFoundException:类文件未找到异常

ClassCastException:类强制转换异常

SecurityException:违背安全原则异常

常见非运行异常有:

NoSuchMethodException:方法未找到异常

IOException:输入输出异常

EOFException:文件已结束一场

FileNotFoundException:文件未找到异常

NumberFormatException:字符串转换为数字异常

SQLException:操作数据库异常

参考博客

https://blog.csdn.net/z1414644039/article/details/84919052
http://www.xwood.net/site_domain/_root/5870/5874/t_c255266.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值