黑马程序员技术交流社区

标题: 关于Java异常处理机制,请教一下各位。 [打印本页]

作者: 曾_强    时间: 2012-5-4 21:16
标题: 关于Java异常处理机制,请教一下各位。
本帖最后由 jiyixuan 于 2012-5-4 21:22 编辑

Java异常有编译时异常和运行时异常,无意中看到受控异常一说。不是很明白?
请分别说明什么是运行时异常(或编译时)和什么是受控异常?分别有什么区别和特点?什么时候使用或者说使用上有什么区别喃?

另外,try.catch能不能将所有的异常都抓取到?若是能,那为什么编译时抓取异常,反而运行时出现异常。

求指教。小弟先谢过。
作者: xieshuhua    时间: 2012-5-25 16:14
回答起来难度很大,baidu上说《Thinking in Java》可以得到答案。帮忙顶一下,看看有没有达人来解读下。。
作者: 丰亚彬    时间: 2012-5-25 16:40
所谓的受控异常其实就是checked Exception,这些异常在程序中必须使用try{}catch{}捕获到,或者使用throws抛出去,不然程序编译的时候就没法通过,像IOException等,而我们说的运行时异常编译器是不检测的,它是因为程序员的原因引起的,比如说我们出现最多的越界异常等等,而且这些异常在try..catch..是没有办法恢复的
作者: whocases    时间: 2012-5-25 22:24
Throwable 是所有 Java 程序中错误处理的父类 ,有两种: Error 和 Exception 。Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM 层次的严重错误 ,导致 JVM 无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。
Exception :表示可恢复的例外,这是可捕捉到的。runtime exception 和 checked exception 。 checked 异常也就是我们经常遇到的 IO 异常,以及 SQL 异常都是这种异常。 对于这种异常, JAVA 编译器强制要求我们必需对出现的这些异常进行 catch 。所以面对这种异常不管我们是否愿意,只能自己去写一大堆 catch 块去处理可能的异常。
runtime exception ,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机负责。比如:我们从来没有人去处理过 NullPointerException 异常,它就是运行时异常,并且这种异常还是最常见的异常之一
作者: whocases    时间: 2012-5-25 22:24
Throwable 是所有 Java 程序中错误处理的父类 ,有两种: Error 和 Exception 。Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM 层次的严重错误 ,导致 JVM 无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。
Exception :表示可恢复的例外,这是可捕捉到的。runtime exception 和 checked exception 。 checked 异常也就是我们经常遇到的 IO 异常,以及 SQL 异常都是这种异常。 对于这种异常, JAVA 编译器强制要求我们必需对出现的这些异常进行 catch 。所以面对这种异常不管我们是否愿意,只能自己去写一大堆 catch 块去处理可能的异常。
runtime exception ,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机负责。比如:我们从来没有人去处理过 NullPointerException 异常,它就是运行时异常,并且这种异常还是最常见的异常之一




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2