A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 龙舌兰 黑马帝   /  2011-10-5 11:11  /  1664 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

常常听人说为了省事儿,就不捕获异常,将其抛出。这个抛出是怎么一个概念,什么样的过程,请高人讲解下。
还有,再什么情况下定义异常。

3 个回复

倒序浏览
黑马网友  发表于 2011-10-5 11:20:03
沙发

Java 异常处理的分类

Java 异常处理的分类

Java 异常可分为可检测异常,非检测异常和自定义异常。

可检测异常

可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则,例如:sqlExecption 这个异常就是一个检测异常。你连接 JDBC 时,不捕捉这个异常,编译器就通不过,不允许编译。

非检测异常

非检测异常不遵循处理或声明规则。在产生此类异常时,不一定非要采取任何适当操作,编译器不会检查是否已解决了这样一个异常。例如:一个数组为 3 个长度,当你使用下标为3时,就会产生数组下标越界异常。这个异常 JVM 不会进行检测,要靠程序员来判断。有两个主要类定义非检测异常:RuntimeException 和 Error。

Error 子类属于非检测异常,因为无法预知它们的产生时间。若 Java 应用程序内存不足,则随时可能出现 OutOfMemoryError;起因一般不是应用程序的特殊调用,而是 JVM 自身的问题。另外,Error 一般表示应用程序无法解决的严重问题。

RuntimeException 类也属于非检测异常,因为普通 JVM 操作引发的运行时异常随时可能发生,此类异常一般是由特定操作引发。但这些操作在 Java 应用程序中会频繁出现。因此,它们不受编译器检查与处理或声明规则的限制。

自定义异常

自定义异常是为了表示应用程序的一些错误类型,为代码可能发生的一个或多个问题提供新含义。可以显示代码多个位置之间的错误的相似性,也可以区分代码运行时可能出现的相似问题的一个或者多个错误,或给出应用程序中一组错误的特定含义。例如,对队列进行操作时,有可能出现两种情况:空队列时试图删除一个元素;满队列时试图添加一个元素。则需要自定义两个异常来处理这两种情况。

Java 异常处理的分类
回复 使用道具 举报
黑马网友  发表于 2011-10-5 12:02:41
藤椅
抛出异常,就好比说,是将异常交给别人,而不是自己亲自处理。如果某一函数抛出异常后,其他函数要调用这个函数时,就要处理这个异常,如果不想处理,也可往外抛,交给其他函数处理…就这样,一层一层的…
回复 使用道具 举报
黑马网友  发表于 2011-10-5 12:30:42
板凳
所谓的抛出异常并不是说  不处理这个异常,而是当前层不考虑捕捉异常,通常异常的捕捉,放在业务层等。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马