`
C_SHaDow
  • 浏览: 49840 次
  • 性别: Icon_minigender_1
  • 来自: 大同
社区版块
存档分类
最新评论

java中错误与异常的总结

阅读更多

错误与异常的继承体系

这里是对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异常。详见

http://www.vifir.com/projectdoc/jdk16/java/awt/class-use/AWTException.html

 

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

 

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

 

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

分享到:
评论
3 楼 为爱Debug 2010-05-20  
依稀记得,以前为了考试背过!呵呵
2 楼 optimism_best 2010-05-20  
楼主,你的样子吓到我了,阿门!
1 楼 javafound 2010-04-13  
  比较细致,呵呵,

相关推荐

    java中十大异常(自总结)

    程序中的突发状况一般有2种:异常、错误 今天分享的是java中的十大异常

    Java常见异常和错误总结

    作为初学者常犯的一些错误和总结,在开发时候可以作为文档进行查询,能帮助我们快速找到答案

    java 异常总结

    其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的。关于异常的全部...

    java各知识点详细总结.docx

    异常处理:Java中的异常处理是一种处理错误和异常情况的方法。Java中的异常处理通过try-catch语句实现,可以捕捉和处理程序中出现的异常情况。 文件读写:Java中的文件读写包括输入输出流、文件类、缓冲流等。Java中...

    java异常机制总结

    关键字:throws 声明方法时候,如果不声明throws的话,那么一般的Exception都要在这个方法中终结,也就是说一定要有相应的catch处理,否则编译时会产生错误。如果方法声明了throws的话,可以交给上一级方法去...

    总结了java容易出错的信息 以及错误信息类型

    总结了java容易出错的信息 以及错误信息类型

    java 面试题 总结

    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的...

    java项目开发中常见异常

    我相信,在我们做项目的时候,console框中常常出现各种的异常,时间久了,会发现常见的也几个,下面我总结一下常见的异常,供大家参考。  1 java.lang.UnsupportedClassVersionError  从字面上我们可以看出来是...

    java异常和错误类总结(必看篇)

    下面小编就为大家带来一篇java异常和错误类总结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Java异常处理总结

    异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用...这是Java语言设计者的高明之处,也是Java语言中的一个难点,下面是我对Java异常知识的一个总结,也算是资源回收一

    Java EE项目中的异常处理总结(一篇不得不看的文章)

    什么是异常?运行时发生的可被捕获和处理的错误。这篇文章主要介绍了Java EE项目中的异常处理总结,有需要的可以了解一下。

    Java实习报告总结.docx

     篇一:Java实习报告总结 1、传统的错误观念 以前以为教学视频和代码看多,自己就懂的多,实际做起来,却不知从何下手,问题在那如何定位如何解决通通跟一样能力有关,debug追踪能力,也称调试.在项目组工作不愁源码,但...

    Thinking in java4(中文高清版)-java的'圣经'

    1.8 单根继承结构 1.9 容器 1.9.1 参数化类型(范型) 1.10 对象的创建和生命期 1.11 异常处理:处理错误 1.12 并发编程 1.13 Java与Internet 1.13.1 Web是什么 1.13.2 客户端编程 1.13.3 服务器端编程 1.22 总结 第...

    Java 排序算法知识点总结.zip

    安全:Java提供了丰富的安全特性,如禁止指针运算、自动内存管理和异常处理机制,以减少程序错误和恶意攻击的可能性。 可移植性:Java字节码可以在所有安装了JVM的设备上执行,从服务器到嵌入式系统,再到移动...

    华为java经典面试题大总结

    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的...

    Java知识点总结.zip

    安全:Java提供了丰富的安全特性,如禁止指针运算、自动内存管理和异常处理机制,以减少程序错误和恶意攻击的可能性。 可移植性:Java字节码可以在所有安装了JVM的设备上执行,从服务器到嵌入式系统,再到移动...

    Java语言基础下载

    在Java中使用HQL 709 内容总结 712 独立实践 712 第三十七章 Spring介绍 713 学习目标 713 Spring简介 714 IOC控制反转 714 Spring的容器 715 AOP面向切面编程 715 AOP的专业术语 715 Spring事务管理 718 Spring与...

    错误总结.doc

    java技术开发中的错误总结,例如空指针,格式转换异常,数组下标越界。

    使用Java创建一个网络爬虫

    在这个实战博客中,我们将创建一个简单的Java网络爬虫,来演示如何从网页上抓取信息。我们将使用Java的核心库以及一些第三方库来帮助我们实现这个爬虫。 以下是本实战博客的主要内容: 项目概述 设置开发环境 创建...

    Java程序设计习题集下载

    以习题的形式对JaVa程序设计方法和常见问题进行了总结与归纳,从而方便复习。  实用性:《Java程序设计习题集》每章都含有一些趣味题,营造了一种轻松而快乐的学习氛围,努力培养和提高学生的学习乐趣,同时也使...

Global site tag (gtag.js) - Google Analytics