public class 处理Exception { public static void main(String []ages){ //产生异常 //除0异常 //1.捕获 try { //int i=12/0; //int 出现了异常直接跳到catch String a=null; // a.length(); //打开一些资源 String s=" "; System.out.println("打开资源"); //使用 System.out.println("使用资源"); //如果在使用中出现异常 a.length(); //关闭资源并释放 //可能不被执行,放入finall里 //System.out.println("希望一定要执行的关闭资源,释放内存代码"); } catch(ArithmeticException ex){ //针对特定的异常进行特别的处理 //除0; System.out.println("捕获了ArithmeticException的异常"); //获取异常信息 String str= ex.getMessage(); //处理方式显示;记录日志 System.out.println("异常信息="+str); //把异常详细信息输出到控制台 ex.printStackTrace(); System.out.println(); } catch(NullPointerException ex){ //针对特定的异常进行特别的处理 //空值 System.out.println("捕获了NullPointerException的异常"); //获取异常信息 String str= ex.getMessage(); //处理方式显示;记录日志 System.out.println("异常信息="+str); //把异常详细信息输出到控制台 ex.printStackTrace(); System.out.println(); } //兜底 catch(Exception ex){ //针对特定的异常进行特别的处理 System.out.println("捕获了Exception的异常"); //获取异常信息 String str= ex.getMessage(); //处理方式显示;记录日志 System.out.println("异常信息="+str); //把异常详细信息输出到控制台 ex.printStackTrace(); System.out.println(); } finally//一定会被执行的代码 { System.out.println("希望一定要执行的关闭资源,释放内存代码"); } System.out.println("程序还在走"); //即使发生异常也会执行finally // try{int i=12/0;} // finally{ // System.out.println("hehe"); // } }
public class MyThrow { //把 throws放在方法的后面 特别声明有可能出现的异常 //方法本身不处理,交给调用者处理 //抛出异常,显示给使用者错误的原因 public int chu(int a,int b)throws Exception { if(b==0){ Exception e=new Exception("b输入错误"); throw e; } return a/b; } //自己定义异常 public void test() throws Exception{ //自己定义 Exception e=new Exception("我自定义的异常信息"); throw e; } public static void main(String []ages) throws Exception //main方法里需要解决问题而不是抛出 { MyThrow a=new MyThrow(); // try { // a.chu(10, 0); // } // catch (Exception e) { // // TODO 自动生成的 catch 块 // //e.printStackTrace(); // System.out.println("我捕获了类常"+e.getMessage()); // // throw e;//处理后抛出异常 // } //运行自定义的错误信息 try{a.test();} catch(Exception e){ System.out.println(e.getMessage()); } a.chu(10, 0); System.out.println("结束了"); }