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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王晨 高级黑马   /  2013-1-3 20:50  /  1955 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这俩都是处理异常的,但是我现在搞不懂error和exception区别,它俩可以换着用吗?有啥区别?

3 个回复

倒序浏览
本帖最后由 刘文超 于 2013-1-3 21:17 编辑

这个是我今天为另一位童鞋回答运行时异常和普通异常的区别的时候写的。
希望对你这个为题也有用。
Throwable包含ExceptionError
        error是虚拟机的一个故障(虽然它可以是任何系统级的服务),听说有致命那么严重。我们来引用JavaDoc对Error的定义:“Error是Throwable的一个子集,它指的是一个合理的应用程序不能截获的严重的问题。大多数都是反常的情况。” ,所以嘛、他俩区别大着了、我们平时遇到的都是exception,只有java虚拟机的错误是error,一般不会遇见的。

Java提供了两类主要的异常:Runtime ExceptionChecked Exception。checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。

      但是另外一种异常:runtime exception,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常并且这种异常还是最常见的异常之一。;又如数组越界一样、我们也没有必要每次遍历和访问数组时候都try、catch一下,那要多累。
      出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往我们不对他处理罢了。也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止 。

【我感觉error基本上是不会遇见的、
   不用考虑特别多、知道有那么回事就行了
   好好掌握一些Exception及捕获、抛出等更有用一些】
回复 使用道具 举报
刘文超 发表于 2013-1-3 21:12
这个是我今天为另一位童鞋回答运行时异常和普通异常的区别的时候写的。
希望对你这个为题也有用。
Throwabl ...

好吧 ,谢谢你的解答!!我再研究一下你的答案,学习一下!!
还有,你第一次回答的"占个位和i自动锁",我愣是没理解,现在明白了,呵呵,原来是为了抢沙发啊
回复 使用道具 举报
王晨 发表于 2013-1-3 21:19
好吧 ,谢谢你的解答!!我再研究一下你的答案,学习一下!!
还有,你第一次回答的"占个位和i自动锁",我愣 ...

恩 第一时间发现了你的帖子、先占个位置,再思考给你解决、总结答案、不然等我想好了,都到n楼了。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马