response.end后抛了异常_(七)异常处理
生活随笔
收集整理的這篇文章主要介紹了
response.end后抛了异常_(七)异常处理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
(七)異常處理
異常
異常的體系結構
java.lang.Throwable|-----java.lang.Error:一般不便攜針對性的代碼進行處理|-----java.lang.Exception:可以進行異常的處理|-----編譯時異常(checked|-----IOException|-----FileNotFoundException|-----ClassNotFoundException|-----運行時異常(unchecked,RuntimeException)|-----NullPointerException|-----ArrayIndexOutOfBoundsException|-----ClassCastException|-----NumberFormatException|-----InputMismatchException|-----ArithmeticException異常體系結構從程序執(zhí)行過程,看編譯時異常和運行時異常
- 編譯時異常:執(zhí)行javac.exe命名時,可能出現(xiàn)的異常
- 運行時異常:執(zhí)行java.exe時,可能出現(xiàn)的異常
常見的異常類型,請舉例說明
//************************以下是運行時異常****************************//ArithmeticException@Testpublic void test6(){int a =1;int b = 0;System.out.println(a/b);}//InputMismatchException@Testpublic void test5(){Scanner scanner = new Scanner(System.in);int score = scanner.nextInt();System.out.println(score);scanner.close();}//NumberFormatException@Testpublic void test4(){String str = "123";str = "abc";int num = Integer.parseInt(str);}//ClassCastException@Testpublic void test3(){Object obj = new Date();String str = (String)obj;}//IndexOutOfBoundsException@Testpublic void test2(){//ArrayIndexOutOfBoundsException // int[] arr = new int[10]; // System.out.println(arr[10]);String str = "abc";System.out.println(str.charAt(3));}//NullPointerException@Testpublic void test1(){//int[] arr = null;//System.out.println(arr[3]);String str = "abc";str = null;System.out.println(str.charAt(0));} //************************以下是運行時異常**************************** //@Test /*public void test7(){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();*///}異常的處理
java異常處理的抓拋模型
- 過程一:”拋“:程序再正常執(zhí)行過程中,一旦出現(xiàn)異常,就會在異常代碼處生成一個對應異常的對象。并將此對象拋出,其后的代碼就不再執(zhí)行
- 關于異常對象的產生:1、系統(tǒng)自動生成的異常對象; 2、手動的生成一個異常對象,并拋出(throw
- 過程二:“抓”:可以理解為異常處理方式1.try catch finally 2.throws
異常處理方式一:try-catch-finally
- 使用說明
- 如何看待代碼中的編譯時異常和運行時異常?
- finally的再說明
- 面試題
final、finally、finalize三者的區(qū)別?
類似的: throw throws Collection Collections String StringBuffer StringBuilder ArrayList LinkedList HashMap LinkedHashMap 重寫和重載- 結構不相似的: 抽象類 接口 ==、equals() sleep()、wait()
異常處理方式二
"throws+異常類型“寫在方法的聲明處。指明此方法執(zhí)行時,可能回拋出的異常類型。 一旦方法體執(zhí)行時,出現(xiàn)異常,仍會在異常代碼出生成一個異常對象,此對象滿足throws 后異常類型時,就會被拋出。異常代碼后續(xù)的代碼,就不會被執(zhí)行對比兩種處理方式
try-catch-finally:真正的將異常處理掉了 throws只是將異常拋給了方法的調用者。并沒真正的將異常處理掉體會開發(fā)中應該如何選擇兩種處理方式?
如果父類中被重寫的方法沒throws方式處理異常,則子類重寫的方法也不能夠使用throws,意味著如果子類重寫的方法中異常,必須使用try-catch-finally的方式去處理 執(zhí)行的方法中,先后又調用了另外幾個方法,這幾個方法是遞進關系執(zhí)行的,我們建議這幾個方法使用throws方法進行處理。而執(zhí)行的方法a可以考慮使用try-catch-finally進行處理。方法重寫的規(guī)則之一: 子類重寫的方法拋出異常類型不大于父類重寫的方法拋出的異常
手動拋出異常對象
使用說明
- 在程序執(zhí)行中,除了自動拋出異常對象的情況外,我們還需要手動的throw一個異常類的對象
面試題
throw和throws的區(qū)別: throw 標識拋出一個異常類的對象,生成異常對象的過程。聲明在方法體內。 throws 屬于異常處理的一種方式,聲明在方法的聲明處。典型例題
class Student{int id;public void regist(int id) throws Exception {if (id>0){this.id = id;}else{//手動拋出一個異常對象//throw new RuntimeException("您輸入的數(shù)據(jù)非法!");//throw new Exception("您輸入的數(shù)據(jù)非法!");throw new MyException("不能輸入負數(shù)");}}@Overridepublic String toString() {return "Student{" +"id=" + id +'}';} }自定義異常類
如何自定義一個異常類?
/*1.繼承于現(xiàn)的異常結構:RuntimeException、Exception 2.提供serialVersionUID 3.提供重載構造器*/ public class MyException extends RuntimeException{static final long serialVersionUID = -7034897190745766939L;public MyException(){}public MyException(String msg){super(msg);} }總結
以上是生活随笔為你收集整理的response.end后抛了异常_(七)异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: axios 注册拦截器 cdn引用_Pi
- 下一篇: C语言int r(int m),INT(