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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王光保 黑马帝   /  2011-7-18 11:31  /  5613 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

既然可以使用Exception可以方便地捕获所有异常,那么以后在程序中直接使用Throwable类不是更好吗?但是为什么实际中不是这样呢?原因是什么啊?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

3 个回复

倒序浏览
黑马网友  发表于 2011-7-18 12:45:24
沙发
[font=arial, 宋体, sans-serif][size=14px]Throwable 类是 Java 语言中所有错误或异常的超类,[/size][/font][font=arial, 宋体, sans-serif][size=14px]Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。[/size][/font]

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-18 13:23:25
藤椅
Throwable类有两个子类:
|-  Exception
|-  Error
Throwable 类是 Java 语言中所有错误或异常的超类。
一般来说,程序产生异常是不可避免的,如 由除数为0导致产生的 ArithmeticException 。因此,若咱们在程序中对异常做出了相应的处理,则程序是可以继续向下执行的。
但是,程序在运行的时候是不允许存在错误的。若程序中突然产生了错误,那么程序就没有再继续运行的必要了。常言道“您用谎言去验证谎言,得到的一定是谎言。”程序也一样,“程序中有了一个错误,那么之后程序计算出来的数据,全部都是错误的。”
因此,咱们都是用Exception匹配异常,而不是使用Throwable类。

常见的程序错误:
使用java命令执行一个不存在的类时,就会产生错误:[code=java]D:\>java test
Exception in thread "main" java.lang.NoClassDefFoundError: test
Caused by: java.lang.ClassNotFoundException: test
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)[/code]此时抛出了一个名为 “NoClassDefFound[color=Red]Error[/color]” 的错误。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-21 19:55:56
板凳
在java程序设计语言中,异常对象都是派生与Throwable类的一个实例,所有异常都是有Throwable继承而来,但在下一层即分解为两个分支:Error和Exception
     Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。不过这种情况很少出现。
  在进行Java程序设计的时候,需要关注的Exception层次结构。这个层次结构又分解为两个分支:一个分支是派生于RuntimeException的异常;另一个分支包含其他异常。划分两个分支的规则是:由程序错误导致的异常属于RuntimeException;曾经能够正确运行,由于某些情况(例如:I/O错误)导致的异常不属于RuntimeException。
   如果遇到了无法处理的情况,Java的方法可以抛出一个异常。方法应该在其首部声明所有可能抛出的异常。这样可以从方法的首部反映出该方法可能会抛出哪类已检查异常。
   在自己编写方法时,不必将所有可能抛出的对象进行声明。至于什么时候需要在方法中用throws子句声明异常,什么异常必须使用throws子句声明,需要记住在遇到下面4种情况才会抛出异常:
   1.调用一个抛出已检查异常的方法
   2.在程序运行过程发现错误,并且利用throw语句抛出一个已检查异常
   3.程序出现错误
   4.Java虚拟机和运行时库出现的内部异常。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 辛苦了

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马