Exception1 benben Posted on Aug 8 2023 java-basis ``` import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.junit.Test; /* * 一、异常的处理:抓抛模型 * * 过程一:抛:程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象。 * 并将此对象抛出。 * 一旦抛出对象后,其后的代码就不再执行。 * * * 过程二:抓:可以理解为异常的处理方式:① try-catch-finally ② throws * * * 二、try-catch-finally的使用 * * try{ * //可能出现异常的代码 * }catch(异常类型1 变量名1){ * //处理异常的方式1 * }catch(异常类型2 变量名2){ * //处理异常的方式2 * }catch(异常类型3 变量名3){ * //处理异常的方式3 * } * ··· * finally{ * //一定会执行的代码 * } * * 说明: * 1.finally是可选的。 * 2.使用try将可能出现异常代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常类的对象,根据此对象 * 的类型,去catch中进行匹配。 * 3.一旦try中的异常对象匹配到某一个catch时,就进入catch中进行有异常的处理。一旦处理完成,就跳出当前的 * try-catch结构(在没有写finally的情况下) * 4.catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下无所谓。 * catch中的异常类型如果满足子父类关系,则要求子类一定要声明在父类的上面。否则,报错 * 5.常用的异常对象处理的方式:① String getMessage() ② printStackTrace * 6.在try结构中声明的变量,在出了try结构以后,就不能再被调用 * 7.try-catch-finally结构可以嵌套 * * 体会:使用try-catch-finally处理编译时异常,使得程序在编译时不再报错,但是运行时仍有可能报错。 * 相当于我们使用try-catch-finally将一个编译时可能出现的异常,延迟到运行时出现。 * */ public class ExceptionTest1 { @Test public void test7() { try { File file = new File("hello.txt"); FileInputStream fis = new FileInputStream(file); int data = fis.read(); while (data != -1) { System.out.println((char) data); data = fis.read(); } fis.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } @Test public void test1() { String str = "123"; str = "abc"; int num = 0; try { num = Integer.parseInt(str); System.out.println("hello---1"); } catch (NullPointerException e) { System.out.println("出现空指针异常了,不要着急"); } catch (NumberFormatException e) { // System.out.println("出现数值转换异常了,不要着急"); // String getMessage(): // System.out.println(e.getMessage()); // printStackTrace e.printStackTrace(); } catch (Exception e) { System.out.println("出现异常了,不要着急"); } System.out.println(num); } } ``` 赠人玫瑰,手留余香 赏 Wechat Pay Alipay Exception2 Exception