日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

response.end后抛了异常_(七)异常处理

發(fā)布時間:2024/7/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

  • 使用說明
try{//可能出現(xiàn)異常的代碼 }catch(異常類型1 變量名1){//處理異常的方式1 }catch(異常類型2 變量名2){//處理異常的方式2 }catch(異常類型3 變量名3){//處理異常的方式3 } .... finally{//一定會執(zhí)行的代碼 }/*說明: 1.finally是可以擇不一定要選的 2.使用try將可能穿異常的代碼報文起來,在執(zhí)行過程中,一旦出現(xiàn)異常,就會生成一個對應異常類的對象,根據(jù)此對象的類型,去catch中進行匹配 3.一旦try中的異常對象匹配到某個catch時,就進入catch進行異常處理,一旦處理完成,就跳出當前的try-catch結構(沒寫finally結構,繼續(xù)執(zhí)行其后的代碼 4、catch中的異常類型若沒子父類關系,則誰聲明在上,誰聲明在下沒關系,若滿足子父類關系,則要求子類一定要聲明在父類的上面。否則報錯 5、常用的異常對象處理方式:1.String getMessage() 2.printStackTrace() 6.在try結構中聲明的變量,在出了try結構以后,就不能再被調用 7.try-catch-finally的結構可以嵌套 */
  • 如何看待代碼中的編譯時異常和運行時異常?
體會1:使用try-catch-finally處理編譯異常時,使得程序編譯時不再報錯,但是運行時仍可能報錯,相當于我們使用try-catch-finally將一個編譯時可能出現(xiàn)的錯誤,延遲到運行時出現(xiàn) 體會2:開發(fā)中,由于運行時異常比較常見,所以我們通常就不針對運行時異常編寫try-catch-finally了。針對于編譯時異常,我們說一定要考慮異常的處理。
  • finally的再說明
finally是可有可無的 finally聲明的是一定會被執(zhí)行的代碼。即使catch中又出現(xiàn)了異常了,try中return語句,catch中return語句等情況 想數(shù)據(jù)庫連接、輸入輸出流、網絡編程Socket等資源,JVM是不能自動回收的,我們需要自己手動釋放,此時的資源釋放,就需要聲明在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后抛了异常_(七)异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。