什么是异常:
异常是发生在程序执行过程中阻碍程序正常执行的错误事件。
比如:用户输入错误数据、硬件故障、网络阻塞等都会导致出现异常。只要在Java语句执行中产生了异常,一个异常对象就会被创建,JRE就会试图寻找异常处理程序来处理异常。如果有合适的异常处理程序,异常对象就会被异常处理程序接管,否则,将引发运行环境异常,JRE终止程序执行。
Java异常处理框架只能处理运行时错误,编译错误不在其考虑范围之内。
异常的关键字:
- try:执行可能尝试异常的代码
- catch:捕获异常
- finally:无论是否发生异常,代码总能执行
- throw:声明方法可能要抛出的各种异常
- throws:手动抛出异常
使用try-catch块捕获异常,分为三种情况:
第一种情况 :正常
代码不存在错误:
第二种情况:出现异常
第三种情况:异常类型不匹配
异常对象常用的方法:
异常的类型:
异常加return的执行顺序:
先执行finally的内容,再执行return终止语句。
不执行finally:
使用system.exit(0),可以直接跳出,不执行finally语句。
多重catch块:
引发多种类型的异常
- 排列catch 语句的顺序:先子类后父类
- 发生异常时按顺序逐个匹配
- 只执行第一个与异常类型匹配的catch语句
例如:
throw 与 throws的区别:
throws:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁。
- 用在方法声明后面,跟的是异常类名
- 可以跟多个异常类名,用逗号隔开
- 表示抛出异常,由该方法的调用者来处理
- throws表示出现异常的一种可能性,并不一定会发生这些异常
throw:则是用来抛出一个具体的异常类型。
- 用在方法体内,跟的是异常对象名
- 只能抛出一个异常对象名
- 表示抛出异常,由方法体内的语句处理
- throw则是抛出了异常,执行throw则一定抛出了某种异常