编译时异常和运行时异常的区别
2015-07-01 09:40
239 查看
最简单的说法:
javac出来的异常就是编译时异常,就是说把源代码编译成字节码(class)文件时报的异常,一般如果用Eclispe,你敲完代码保存的时候就是编译的时候。
java出来的异常就是运行时异常
Java异常可分为3种:
(1)编译时异常:Java.lang.Exception
(2)运行期异常:Java.lang.RuntimeException
(3)错误:Java.lang.Error
Java.lang.Exception和Java.lang.Error继承自Java.lang.Throwable;
Java.lang.RuntimeException继承自Java.lang.Exception.
编译时异常: 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。
运行期异常: 这意味着程序存在bug,如数组越界,0被除,入参不满足规范.....这类异常需要更改程序来避免,Java编译器强制要求处理这类异常。
错误: 一般很少见,也很难通过程序解决。它可能源于程序的bug,但一般更可能源于环境问题,如内存耗尽。错误在程序中无须处理,而有运行环境处理。
顺便说一下:编译期和运行期的区别
javac出来的异常就是编译时异常,就是说把源代码编译成字节码(class)文件时报的异常,一般如果用Eclispe,你敲完代码保存的时候就是编译的时候。
java出来的异常就是运行时异常
Java异常可分为3种:
(1)编译时异常:Java.lang.Exception
(2)运行期异常:Java.lang.RuntimeException
(3)错误:Java.lang.Error
Java.lang.Exception和Java.lang.Error继承自Java.lang.Throwable;
Java.lang.RuntimeException继承自Java.lang.Exception.
编译时异常: 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。
运行期异常: 这意味着程序存在bug,如数组越界,0被除,入参不满足规范.....这类异常需要更改程序来避免,Java编译器强制要求处理这类异常。
错误: 一般很少见,也很难通过程序解决。它可能源于程序的bug,但一般更可能源于环境问题,如内存耗尽。错误在程序中无须处理,而有运行环境处理。
顺便说一下:编译期和运行期的区别
编译期和运行期进行的操作是不相同的,编译器只是进行语法的分析,分析出来的错误也只是语法上的错误,而运行期在真正在分配内存·· 比如说你写一个while循环,一直往栈里写,编译器是不会出错的,可是运行期就会出现栈满的错误··
相关文章推荐
- 草根经济学的悖论:谁是土豪盛宴的围观者?
- JDBC添加数据
- 关于MyEclipse 半天打不开的问题(工作区间损坏)--转
- 互联网热门词汇搞笑来袭
- PHP+mysql+Highcharts实现饼状统计图
- Tiny框架之内容组成
- VS2010+QT5编程之用QTabWidget写标签页(页码)的注意事项
- android - anim translate中 fromXDelta、toXDelta、fromYDelta、toXDelta属性
- CSDN积分兑换
- java获取System.out输出字符串
- startActivity时报错Calling startActivity() from outside of an Activity conte
- bind2nd 和 bind1st【转】
- BigPipe为什么可以节省时间?
- CentOS用户管理及分组管理(二)
- Measuring Performance with the Built-in Profiler[Unity]
- java中重载(Overloading)和重写(Overriding)
- Talend 将Oracle中数据导入到hive中,根据系统时间设置hive分区字段
- 如何争取APP Store推荐位
- Principle of Computing(2)
- eclipse(优化六) eclipse设置行宽Maximum line width