异常
1.1什么是异常
异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。
1.2关键字:
1 try(尝试执行的代码块);
2 catch(捕获异常);
3 finally;(是否异常都执行代码)
System.exit(1) //退出java虚拟机,当catch中出现此代码时,不执行finally。(唯一不执行finally的情况。)
-任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。
如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,
编译器把finally中的return实现为一个warning。
示例:
public class FinallyTest
{
public static void main(String[] args) {
System.out.println(new FinallyTest().test());;
}
static int test()
{
int x = 1;
try
{
x++; //x==2;
return x; //返回值 2;
}
finally
{
++x; //x==3;
}
}
}
在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。在转去之前,try中先把要返回的结果存放到不同于x的局部变量中去,执行完finally之后,在从中取出返回结果,因此,即使finally中对变量x进行了改变,但是不会影响返回结果。它应该使用栈保存返回值。
4 throw; throw new Exception(); //
5 throws;throws Exception //在定义方法时,声明会出现异常
- try 、caatch、finally、throw、throws。
- throw 和自定义异常同时使用,抛出异常后就不会在执行下部代码。
throws和throw的使用区别:
- throws 只能出现在方法函数头;而throw出现在函数体。
- throws 表示出现异常的一种可能性,并不一定会发生这些异常。
- 在文件流操作和数据库连接的时候 需要用到finally;
1.3异常对象常用的方法
Exception e
e.getMessage() 返回异常信息描述字符串,是printStackTrace()的一部分
e.printStackTrace() 输出异常的堆栈信息。
system.err.println() //用户自定义的输出信息。
Exception 所有异常的父类
- 一般有哪些错误。
1. 语法错误
2. 运行时错误 catch 能够捕获的异常
3. 系统错误(Error ApplicationException)
4. 逻辑错误 (通过throw抛出异常进行处理)
- Error:仅靠程序本身无法恢复的严重错误;
- Exception:由Java应用程序抛出和处理的非严重错误
- Checked类异常,程序必须处理。
- RuntimeException:运行时异常,不要求程序必须做出处理
- 示例
do{
try{
//代码块
}catch(异常内容 变量){
//代码异常,执行代码!
}catch(Exception e){
变量.getMessage()
}finally{
//程序一定会执行,特殊情况除System.exit(1)外。
} while (boolean);
catch 语句的可以嵌套使用,类似于if。