java中的异常处理


java中的异常处理



第一种: JVM默认处理方式

如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行并且还终止了程序,异常后面的代码将不在执行

package com.itheima_01;
import java.io.FileWriter;
import java.io.IOException;

/*
 * 	异常的处理方式:

 * 		
 * 
 *  jvm处理异常的方式:
 *  	如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行
 *  	并且还终止了程序,异常后面的代码将不在执行
 */
public class ExceptionDemo2 {
	public static void main(String[] args) throws Exception {
	   System.out.println(2/0);
	   System.out.println("hello");
     		
	}
	
 
}





第二种:try…catch方式处理异常

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

try {

//需要被检测的语句。

}

catch(异常类 变量) { //参数。

//异常的处理语句。

}

finally {

//一定会被执行的语句。

}

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

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

    package com.itheima_01;
import java.io.FileWriter;
import java.io.IOException;

/*
 * 	异常的处理方式:
 * 			捕获处理
 * 				try...catch语句
 * 
 * 				try {
 * 					有可能出现问题的代码;
 * 				} catch(ArithmeticException ae) {
 * 					处理异常;
 * 				}
 * 
 * 				try...catch的执行顺序:
 * 					首先执行try语句
 * 						如果发现异常,异常下面的代码不在执行,直接跳入catch语句中,catch语句结束后,整个try...catch结束
 * 						如果没有发现异常,try语句执行结束后,try...catch直接结束, 不在执行catch语句
 * 
 * 
 
 * 		
 * 
 *  jvm处理异常的方式:
 *  	如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行
 *  	并且还终止了程序,异常后面的代码将不在执行
 */
public class ExceptionDemo2 {
	public static void main(String[] args) throws Exception {
		try {
			System.out.println(1);
			//System.out.println(2 / 0);
			System.out.println(2);
		} catch(ArithmeticException ae) {
			System.out.println("除数不能为0");
		}
		
		System.out.println(3);
		
	}
}




第三种: throws方式处理异常

A:throws使用:

   权限修饰符 返回值类型  方法名(形参列表) throws 异常类型1,异常类型2….{

}  

  package com.itheima_01;

import java.io.FileWriter;
import java.io.IOException;

/*
 * 	异常的处理方式:
 * 			捕获处理
 * 				try...catch语句
 * 
 * 				try {
 * 					有可能出现问题的代码;
 * 				} catch(ArithmeticException ae) {
 * 					处理异常;
 * 				}
 * 
 * 				try...catch的执行顺序:
 * 					首先执行try语句
 * 						如果发现异常,异常下面的代码不在执行,直接跳入catch语句中,catch语句结束后,整个try...catch结束
 * 						如果没有发现异常,try语句执行结束后,try...catch直接结束, 不在执行catch语句
 * 
 * 
 * 			抛出去
 * 				当我们不想处理异常,或者没有能力处理的时候,我们可以选择抛出异常,谁调用方法谁处理异常
 * 				使用关键字throws在方法的声明出抛出异常

 * 		
 * 
 *  jvm处理异常的方式:
 *  	如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行
 *  	并且还终止了程序,异常后面的代码将不在执行
 */
public class ExceptionDemo2 {
	public static void main(String[] args) throws Exception {
		//method();
		
		function();
		
	}
	
	public static void function() throws Exception {
		FileWriter fw = new FileWriter("a.txt");
	}

	private static void method() {
		try {
			System.out.println(1);
			//System.out.println(2 / 0);
			System.out.println(2);
		} catch(ArithmeticException ae) {
			System.out.println("除数不能为0");
		}
		
		System.out.println(3);
	}

}





第四种:多异常处理

A:对代码进行异常检测,并对检测的异常传递给catch处理。对每种异常信息进行不同的捕获处理。

void show(){ //不用throws

try{

throw new Exception();//产生异常,直接捕获处理

}catch(XxxException e){

//处理方式

}catch(YyyException e){

//处理方式

}catch(ZzzException e){

//处理方式

}

}

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

   package com.itheima_01;
/*
 * 	如何处理多个异常:
 * 		可以使用多个try...catch语句
 * 		使用一个try和多个catch
 * 
 * 多个catch之间的顺序:
 * 			多个catch之间可以有子父类
 * 			平级之间没有顺序关系
 * 			如果有子父类,父类异常必须放在后面
 * 			
 * 	
 */
public class ExceptionDemo3 {
	public static void main(String[] args) {
		try {
			String s = null;
			System.out.println(s.length());
			
			//int[] arr = new int[5];
			//System.out.println(arr[8]);
			
			//System.out.println(2 / 0);
			
		} 
		
		catch(ArrayIndexOutOfBoundsException e) {
			System.out.println("出现数组越界了");
		} 
		catch(NullPointerException e) {
			System.out.println("出现空指针了");
		}
		catch(Exception e) {
			System.out.println("出现异常了");
		}
		/*try {
		} catch(ArrayIndexOutOfBoundsException e) {
			System.out.println("出现数组越界了");
		}*/
		

	}

	private static void method() {
		try {
			String s = null;
			System.out.println(s.length());
		} catch(NullPointerException e) {
			System.out.println("出现空指针了");
		}
		
		try {
			int[] arr = new int[5];
			System.out.println(arr[8]);
		} catch(ArrayIndexOutOfBoundsException e) {
			System.out.println("出现数组越界了");
		}
	}

}






你可能感兴趣的:(java中的异常处理)