捕获异常try…catch…finally

本文记录Java学习过程中遇到的捕获异常try…catch…finally语句~

捕获:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理。

捕获异常格式:

try {
	//需要被检测的语句。
}
catch(异常类 变量) { //参数。
	//异常的处理语句。
}
finally {
	//一定会被执行的语句。
}

try:该代码块中编写可能产生异常的代码。

catch:用来进行某种异常的捕获,实现对捕获到的异常进行处理。

finally:有一些特定的代码无论异常是否发生,都需要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会被执行的。

示例代码:

try	{
       int[] arr = new int[3];
	System.out.println( arr[5] );// 会抛出ArrayIndexOutOfBoundsException
	当产生异常时,必须有处理方式。要么捕获,要么声明。
}
catch (ArrayIndexOutOfBoundsException e) { //括号中需要定义什么呢?try中抛出的是什么异常,在括号中就定义什么异常类型。 
	System.out.println("异常发生了");
} finally {
        arr = null; //把数组指向null,通过垃圾回收器,进行内存垃圾的清除
}
System.out.println("程序运行结果");
  • try catch finally组合:检测异常,并传递给catch处理,并在finally中进行资源释放。
  • try catch组合: 对代码进行异常检测,并对检测的异常传递给catch处理。对异常进行捕获处理。

示例代码:

void show(){ //不用throws 
        try{
	        throw new Exception();//产生异常,直接捕获处理
        }catch(Exception e){
                //处理方式	
	}
}
  • 一个try 多个catch组合: 对代码进行异常检测,并对检测的异常传递给catch处理。对每种异常信息进行不同的捕获处理。

示例代码:

void show(){ //不用throws 
	try{
		throw new Exception();//产生异常,直接捕获处理
	}catch(XxxException e){
                //处理方式	
	}catch(YyyException e){
               //处理方式	
	}catch(ZzzException e){
                //处理方式	
	}
}

注意:这种异常处理方式,要求多个catch中的异常不能相同,并且若catch中的多个异常之间有子父类异常的关系,那么子类异常要求在上面的catch处理,父类异常在下面的catch处理。

  • try finally 组合: 对代码进行异常检测,检测到异常后因为没有catch,所以一样会被默认jvm抛出。异常是没有捕获处理的。但是功能所开启资源需要进行关闭,所有finally。只为关闭资源。

示例代码:

void show(){//需要throws 
	try{
	        throw new Exception();
	}finally {
		//释放资源
	}
}

标签: none