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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 伊廷文 中级黑马   /  2013-3-26 21:03  /  1555 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

编译时异常与运行时异常有什么区别

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-27 19:51

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

6 个回复

倒序浏览
编译时异常,是语法异常,如果能检查出来.再改正,能在最大程序中减少程序的问题,运行时异常就很难查觉,可以你自己玩了很久没发现.但一旦出现.你的产品就完了.
如同一个产品质量发生在自己的工厂里,当时发现花再大成本也可以解决,流到客户手中,你订单就完了.这就是区别.

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
编译时异常,即在编译时就能察觉的异常,运行时异常与编译时异常中最为差别的一点是,运行时异常可以不用处理

编译时异常  不需处理

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
从意义上来讲,编译时异常是在可控范围之内的,也就是说,你知道会出现什么情况的错误,而且这种错误一般都比较严重,所以事先定义异常,在编译时就不通过。    而运行时异常一般都没有那么严重,出现异常后会有提醒,就O了,而且一般是在你的预测之外,你不知道运行时会出现什么情况,这时用运行时异常比较合适。

从功能上来讲,编译时异常是在编译过程中被捕获的,必须要有catch来接收被抛出异常。   而运行时异常只需要抛出就可以了,并不需要catch来接收。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
楼主,你好
其实这个很简单。

编译时异常: 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。

运行期异常: 这意味着程序存在bug,如数组越界,0被除,入参不满足规范.....这类异常需要更改程序来避免,Java编译器强制要求处理这类异常。

错误: 一般很少见,也很难通过程序解决。它可能源于程序的bug,但一般更可能源于环境问题,如内存耗尽。错误在程序中无须处理,而有运行环境处理。

希望能帮到你。

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
编译时异常就是可以被修复的异常,这类异常一般要在方法上显示声明,或者显示try catch.
运行时异常通常是物理上难以实现的异常,也就是你的程序本身存在问题,这类异常必须要修改代码才能解决。
回复 使用道具 举报
Exception异常分为:RuntimeException(运行时异常,也叫未检查异常或不受检查异常)和受检查异常(编译时异常):

已检查异常::: 程序员已经足够小心的检查了他的代码,但是还是不能保证代码不出现异常;如,程序要访问某个文件,但访问时文件不存在,这和程序本身没有太大关系

运行时异常:一般是由程序员没有细心检查代码,而导致的如空指针异常、数组越界、类型转换异常等都是由于程序员粗心大意造成的。这些异常是在编码过程中是能够避免的。


注意:
运行时异常,属于RuntimeException类及子类范围的类(以及衍生类)都属于运行时异常。开发时,一般就是try --catch --finally 或者throw一个异常对象(自定义的也行),throws一个异常类,给调用者处理 受检查异常是受编译器检查的异常,在Exception范围内,除了运行时异常的类都是受检查异常类,,,他会在编译的时候检查你的代码可能在运行的时候抛出异常(开发工具都会提示你),这通常在编译的时候要去处理的。他一般会检查你的代码语法错误,,,当你有语法错误时你必须处理,否则编译不能通过,,就运行不了




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