java 异常总结_java中错误与异常的总结

本文深入探讨了Java中的异常处理,重点介绍了Exception和Error的区别。Exception是可挽回的,通常需要程序员进行捕获和处理,而Error是致命的,如OutOfMemoryError和StackOverflowError。此外,还提到了一些常见的异常类型,如NullPointerException和AWTException,并强调了正确处理ThreadDeath的重要性。对于异常的处理,包括使用try-catch语句和throws关键字。通过对Java异常体系的梳理,有助于开发者更好地理解和处理程序中的异常状况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

792867f2aacc820f529323e156f3419c.png

这里是对java中错误与异常的总结。

Exception类是Java中的异常类,它继承了java.lang包下的Throwable类,它本身之下也有庞大的继承体系,稍后做详细说明。Error也继承了java.lang包下的Throwable类,其实二者的区别在本人理解看来就是Exception是可挽回的,而Error则是fatal的,只是程度上的区别。为什么有理由这么说呢?jdk中有一例AWTException和AWTError,这不是很奇怪吗?

那么Throwable里的东东怎么去用呢?第一反应可能是try{}catch(Throwable e){};或者给那个方法直接throws一个某某Throwable的实现子类;再或者看某某种情况是程序所不期待的,就throw一个异常类实例(一般由于Error是致命的,所以程序员没有“义务”,也不必拉么“无聊”去处理一个Error)。

这里说明一下Exception。一般异常可分为两种:运行时异常即RuntimeException(运行时异常);强制异常(就是在编译前就应该由程序员处理的异常)。

现列举几个常见的错误及异常:

上面提到的AWTError是当发生严重的 Abstract Window Toolkit 错误时,抛出此错误。这个名字看着很恐怖,我当时

第一眼没看出来,定睛一瞧才发现就是平时使用的java.awt包啊!呵呵……

接着看看另一个Error:ThreadDeath。jdk中描述:调用 Thread 类中带有零参数的 stop 方法时,受害线程将抛出一个

ThreadDeath 实例。 仅当应用程序在被异步终止后必须清除时才应该捕获这个类的实例。如果 ThreadDeath 被一个方法捕获,那么将它重新抛出非常重要,因为这样才能让该线程真正终止。 如果没有捕获 ThreadDeath,则顶级错误处理程序不会输出消息。

虽然 ThreadDeath 类是“正常出现”的,但它只能是 Error 的子类而不是 Exception 的子类,因为许多应用程序捕获所有出现的 Exception,然后又将其放弃。

虽然Thread.stop()已经是一个过时的方法,但ThreadDeath告诉我们有些东西是“正常出现”的,但却定义为Error。

接下来是两个比较常见的Error:OutOfMemoryError和StackOverflowError。它们都是java.lang包下VirtualMachineError的子类。前者在Java 虚拟机因内存溢出或没有可用的内存提供给垃圾回收器而无法分配一个对象时抛

出;后者是当应用程序递归太深而发生堆栈溢出时抛出。对于Exception,先说说刚才那个AWTExcption。在调用java.awt包下的某些方法时会抛出AWTExcption异常。详见

有一些异常是比较常见的,如:DataFormatException(数据格式异常)、FontFormatException(字体格式异常)。这两个异常在JFC中都是没有子类的,比较简单。还有一些Exception的字类本身还有很多自类,如IOException就有比较庞大的继承体系。

不过,以上提到的异常均为强制异常。Exception类有一个子类比较特别,它是RuntimeException。运行时异常有一些子类中常见的有NullPointerException(空指针异常)、EmptyStackException(栈为空异常)、IndexOutOfBoundException(数组越界异常)等等。

通过对错误与异常的总结,我本人不仅对Throwable类有个总括的认识,也终于发现java中继承体系之庞大。555...

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-04-13 01:02

浏览 1490

论坛回复 / 浏览 (3 / 3312)

评论

3 楼

为爱Debug

2010-05-20

依稀记得,以前为了考试背过!呵呵

2 楼

optimism_best

2010-05-20

楼主,你的样子吓到我了,阿门!

1 楼

javafound

2010-04-13

38687d1a1ad71d37c86f287056834d1a.gif  比较细致,呵呵,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值