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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

LANYAN

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© LANYAN 初级黑马   /  2014-3-28 10:35  /  972 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

运行时异常与一般异常有什么区别?还有error和exception

4 个回复

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

error 表示恢复不是不可能但很困难的情况下的一种严重问题。 比如说内存溢出。 不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

评分

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

查看全部评分

回复 使用道具 举报
运行时异常(RuntimeException)就是说在可能出现异常,但是只在运行时肯出现异常,编译时可以通过的,运行时不可以通过,而一般异常编译都不能通过,error时错误,比exception严重,exception是可以解决异常的,而error是不可以解决的

评分

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

查看全部评分

回复 使用道具 举报
个人理解,运行异常通常是在往函数传入的参数已影响到程序的数据处理或执行流程,抛出此异常,程序停止。
一般异常是一些可处理异常,不会对程序运行造成太大影响,可以利用这些异常的处理,实现自己想要的流程分支,
去执行不同的语句块。

评分

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

查看全部评分

回复 使用道具 举报
Throwable包含Exception 和Error。
        error是虚拟机的一个故障(虽然它可以是任何系统级的服务),听说有致命那么严重。我们来引用JavaDoc对Error的定义:“Error是Throwable的一个子集,它指的是一个合理的应用程序不能截获的严重的问题。大多数都是反常的情况。”  

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

      但是另外一种异常:runtime exception,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常并且这种异常还是最常见的异常之一。;又如数组越界一样、我们也没有必要每次遍历和访问数组时候都try、catch一下,那要多累。
别人的回答,很不错。。     

出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往我们不对他处理罢了。也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止 。

评分

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

查看全部评分

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