Java异常
来源:互联网 发布:九九乘法表java编程 编辑:程序博客网 时间:2024/06/04 18:27
Java程序中的非正常情况分为两种::错误(Error)和异常(Exception)。
错误(Error):一般指与虚拟机相关的问题,如系统崩溃、虚拟机错误,内存不足等错误,程序因无法处理这些错误而中断。
异常(Exception):程序在编译和运行时出现的问题。如空指针,数组越界,除0等异常,程序可以捕获这些异常并处理。
一、java异常
java异常分为两大类:Checked Exception和Runtime Exception。
Checked Exception是在程序编译期出现的异常,这种异常是Java编译器强制要求处理的,要么用try-catch块捕获处理,要么用throws声明抛出,如果不处理,程序出错无法通过译。
Runtime Exception是在程序运行期出现的异常。这种异常是Java编译器不可预见的,如果不捕获处理,程序将终止,因此应该对这种异常进行捕获处理。
二、异常处理机制
抛出异常
在Java程序的执行过程中,如果出现了异常事件,就会产生一个异常对象,这个异常对象将提交给Java运行时环境JRE,这个产生异常和提交异常的过程叫做抛出异常。
抛出异常的三种方式:
1.系统自动抛出异常
执行程序代码时出现了异常,系统将抛出这个异常。
2.使用throws声明抛出异常
当某个方法可能抛出某种异常的时候可以用throws声明可能抛出的异常,交给这个方法的上一级调用者来处理。
3.使用throw抛出异常
当执行程序的时候出现某种情况的时候主动抛出异常,交给这个方法的上一级调用者来处理。
throws和throw的比较:
throws在方法签名处声明抛出异常,throw在方法体内抛出异常。
throws只是声明可能抛出这个异常,也有可能是不抛出的,throw被执行时一定会抛出异常。
捕获异常
当JRE接收到异常的时候,会寻找能处理该异常对象的catch块,找到合适的catch块并将该异常对象交给该catch块处理,这个过程叫做捕获异常。
如果JRE找不到捕获并处理异常的catch块,那么JRE将终止,Java程序将退出。
try-catch捕获异常:
当try{ }中的程序出现异常,则该异常出现的位置之后的程序代码都不执行,JRE会依次判断产生的异常对象是否是catch{ }后的异常类或者其子类的实例,如果是,异常被捕获,在catch{ }中进行处理,如果不是,继续跟下一个catch{ }块中的异常类的实例进行比较。
使用finally{ }:
除非退出了程序,否则finally{ }一定会在try-catch后执行,可以用finally{ }来关闭一些资源比如数据库连接或者IO流等。
Java异常跟踪栈:
异常对象的printStackTrace()方法可以用于打印异常的跟踪栈信息。
- java 异常,java,异常
- Java 异常 异常链
- Java异常
- Java 异常
- JAVA 异常
- Java异常
- java 异常
- Java异常
- java异常
- Java异常
- java异常
- java异常
- java异常
- java 异常
- java异常
- java异常
- java异常
- Java异常
- {小结}NOIP2005TG
- Java线程
- hivemeta、sparkSubmit进程参数优化
- [C/C++]_[判断程序是32位还是64位]
- eclipse安装sdk后出现的错误
- Java异常
- 1. Two Sum
- 输出星号图
- jqxGrid自定义行编辑器
- [bzoj4417][SHOI2013]超级跳马
- linux开机自动联网设置
- Android 热门博主汇总
- 自定义进度条控件(附带百分比的)
- YTU:学生成绩输入和输出