31 Exception 异常处理
/*
 * Exception in thread "main" java.lang.ArithmeticException: / by zero
	at com.itheima_01.ExceptionDemo.main(ExceptionDemo.java:5)
	我们在写代码的时候,经常的出现一些小问题,那么为了方便我们处理这些问题,java为我们提供了异常机制
异常包含了错误的类型、原因以及位置
异常:不正常,我们在代码的时候出现的编译或者运行时的错误
	异常的体系结构:
			Throwable(最顶层)
					Error:出现的不能够处理的严重问题
					Exception:可以处理的问题
	电脑坏了:
		系统中毒:重装系统就可以了
		主板坏了:买一台新的
 *
 */
/*
 * 	异常的处理方式:
 * 			1.捕获处理
 * 				try...catch语句
 *
 * 				try {
 * 					有可能出现问题的代码;
 * 				} catch(ArithmeticException ae) {
 * 					处理异常;
 * 				}
 * 			2.抛出去
 * 				当我们不想处理异常,或者没有能力处理的时候,我们可以选择抛出异常,谁调用方法谁处理异常
 * 				使用关键字throws在方法的声明出抛出异常
 *
 *try...catch的执行顺序:
 * 					首先执行try语句
 * 						如果发现异常,异常下面的代码不在执行,直接跳入catch语句中,catch语句结束后,整个try...catch结束
 * 						如果没有发现异常,try语句执行结束后,try...catch直接结束, 不在执行catch语句
 *
 *  jvm处理异常的方式:
 *  	如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行
 *  	并且还终止了程序,异常后面的代码将不在执行
 */
 * 如何处理多个异常:
 * 		可以使用多个try...catch语句
 * 		使用一个try和多个catch
 *
 * 多个catch之间的顺序:
 * 			多个catch之间可以有子父类
 * 			平级之间没有顺序关系
 * 			如果有子父类,父类异常必须放在后面(类似于if..else if..else.)
 *
 * finally:组合try...catch使用,用于释放资源等收尾工作,无论try...catch语句如何执行,finally的代码一定会执行
 *
 * FileWrite 写数据需要close才能写入文件,出现异常后就会退出,这时如果在finally里写入close方法那么异常前的数据可以正常写入
 *
 *  try {
 *  	有可能出现问题的代码;
 *
 *  } catch(异常对象) {
 *  	处理异常;
 *  } finally {
 *  	释放资源;
 *  	清理垃圾;
 *  }
 *
public class Exception处理方式 { public static void main(String[] args) /*throws Exception*/ { try { String s = null; System.out.println(1); System.out.println(s.startsWith("aa")); System.out.println(2);//当前面try捕获到异常,后面输出2就不会执行 } catch (Exception e) { System.out.println("空指针"); System.out.println(3); } /*function();*/ } /*public static void function() throws Exception { FileWriter fw = new FileWriter("b.txt"); }*/ }
输出

package day31_exception; import java.lang.Exception; /* * 如何处理多个异常: * 可以使用多个try...catch语句 * 使用一个try和多个catch * * 多个catch之间的顺序: * 多个catch之间可以有子父类 * 平级之间没有顺序关系 * 如果有子父类,父类异常必须放在后面(类似于if..else if..else.) * * */ public class Exception多个catch时执行顺序 { 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 (Exception e) { System.out.println("出现异常了"); }*/catch (ArrayIndexOutOfBoundsException e){ System.out.println("出现数组越界了"); }catch (NullPointerException e) { System.out.println("出现空指针了"); }catch (Exception e) { System.out.println("出现异常了"); } } }
输出

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号