java运行期异常与编译期异常——个人学习笔记
2016-12-27 10:32
351 查看
异常是不正常的事件,不是错误。它通过异常处理机制可以使程序继续运行下去。
错误是很难处理的,比如内存溢出等,不能通过异常处理来解决。发生错误,程序肯定中断。
我们程序员更关心的是Exception这个异常类。
编译期异常(或检测异常)
-程序正确,但因为外在的环境条件不满足引发异常。编译器强制要求处理这类异常,如果程序员不捕获这类异常(try..catch),程序就无法被编译(即编译不通过)
-例如io异常、sql异常。而且捕获的异常(多个catch)还有按照从小到大的顺序写。如果先写父类异常,那么后面范围小的子类异常无法被捕获(无用代码了)。
运行期异常
-编译器不强制处理,在运行期间被JVM处理抛出。产生的原因一般是程序中有错误,需要修改代码。
-例如除数为0、数组下标越界、数据格式转换异常、空指针异常等。
运行期异常与编译期异常的区别:
编译期:在编译期强制被处理的异常
运行期:编译期不被强制处理,运行期JVM将自动检测抛出
注意:异常被处理后,程序将不会被中断,会继续执行。
面试偶尔会问(本人经历...):
1.运行期异常是否可以捕获 (try..catch的都是编译期的异常,运行期的异常需要你改代码)
2.运行期异常、编译期异常各举几个例子 (看上面)
错误是很难处理的,比如内存溢出等,不能通过异常处理来解决。发生错误,程序肯定中断。
我们程序员更关心的是Exception这个异常类。
编译期异常(或检测异常)
-程序正确,但因为外在的环境条件不满足引发异常。编译器强制要求处理这类异常,如果程序员不捕获这类异常(try..catch),程序就无法被编译(即编译不通过)
-例如io异常、sql异常。而且捕获的异常(多个catch)还有按照从小到大的顺序写。如果先写父类异常,那么后面范围小的子类异常无法被捕获(无用代码了)。
运行期异常
-编译器不强制处理,在运行期间被JVM处理抛出。产生的原因一般是程序中有错误,需要修改代码。
-例如除数为0、数组下标越界、数据格式转换异常、空指针异常等。
运行期异常与编译期异常的区别:
编译期:在编译期强制被处理的异常
运行期:编译期不被强制处理,运行期JVM将自动检测抛出
注意:异常被处理后,程序将不会被中断,会继续执行。
面试偶尔会问(本人经历...):
1.运行期异常是否可以捕获 (try..catch的都是编译期的异常,运行期的异常需要你改代码)
2.运行期异常、编译期异常各举几个例子 (看上面)
相关文章推荐
- C\C++ 程序员从零开始学习Android - 个人学习笔记(九) - java基础 - 异常
- java学习笔记---第11章异常与调试
- 异常抛出学习笔记ExceptionDemo2.java
- android个人学习笔记:Unable to open sync connection!异常处理
- Java学习个人笔记(一)配置java环境变量(Feb04,2013 - )
- [Java学习笔记] 对象的比较(引用比较、值比较) ^_^个人的理解,请多多关照^_^
- java 异常和回调学习笔记-黑马
- 黑马程序员——Java异常处理学习笔记
- 【Java学习笔记】自定义Java异常
- Java学习笔记四。设计模式、基本数据类型、包装类、异常、断言、包、访问权限、命名规范、jar
- C\C++ 程序员从零开始学习Android - 个人学习笔记(五) - java基础 - 类(待续)
- 黑马程序员---- Java学习笔记:1.异常 2.集合
- Java异常处理学习笔记
- Java 学习笔记 (4) -异常 Exception
- 个人安卓学习笔记---java.io.IOException: Unable to open sync connection!
- C\C++ 程序员从零开始学习Android - 个人学习笔记(三) - java基础 - 环境和工具
- C\C++ 程序员从零开始学习Android - 个人学习笔记(四) - java基础 - 数据类型、变量、字符串、数组
- 【JAVA学习笔记】个人设定
- Java学习笔记(异常)
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)