异常:描述出错信息的对象。本质是对象。
Exception为所有异常的父类,可以捕获,可以处理。
Error为所有错误的父类,可以捕获,但不能处理。
Exception和Error有一个共同的父类Throwable
可以通过
try{
}catch(Exception e ){ } 来捕获异常。捕获异常的含义为定义一个异常变量,用该变量接收try块
中抛出的异常对象。
比如:
public class Test {
public static void main(String [] args){
int []x = {3,4,5,8};
int sum = 0;
try{
for(int i =0;i<=4;i++){
sum += x[i];
}
System.out.println(sum);
}catch(Exception e){
System.out.println("出现异常");
}
System.out.println("异常外代码");
}
}
出现结果
异常外代码
异常执行顺序:
先执行try块,顺序执行,如果有异常发,那么转去catch块执行,同时终止try块中的其他代码。
无论是否有异常finally都会执行。
finally块,是和try,catch连用语句块,表示无论是否有异常发生,都会执行的语句块。如果try块或catch块中,
有return语句,那么在跳出方法之前执行。但如果虚拟机关闭(System.exit( 0 )),finally才不会执行。所以,finally
一般用于资源清理操作,比如,流的关闭,数据库的关闭等。
如果一个try快后面定义了多个catch块,当try块中有异常发生时,只会执行第一个匹配异常对象的catch块。其余的catch块
会忽略。
异常的分类:
编译异常和运行异常。
编译器异常时要求开发者必须处理的异常。如果不处理,那么编译错误。
运行器异常,开发者可处理可不处理,如果不处理,也不会编译错误。
所有运行器异常都是RuntimeExcption的子类,如果不是RuntimeExcption的子类,那么就是编译器异常。
创建一个异常对象,然后显示抛出
throw new NullPointerException( );
throw 和 throws 的区别:
throw是一条语句,表示显示抛出某个异常对象。throw new Exception( );
throws是方法修饰符。表示某个方法可能会抛出某个异常。那么,调用该方法时,就必须处理该方法抛出的异常。
垃圾回收器,回收没有被变量所指向的东西。程序员不能干预垃圾回收,但是可以通过调用System.gc( ); 加快垃圾回收的速度。
自动拆箱,先将包装类中封装的基本类型数据取出来,再和y相加
Integer x = new Integer(3);
int y = 3;
int z = x+y;
System.out.println(z);
自动装箱,将5这个基本类型,封装成包装类对象,再将地址赋值给a
Integer a = 5;
@Deprecated // 定义该方法为过时方法
@Deprecated // 定义该方法为过时方法
public void speak(){
}