欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 異常的實例詳解

 更新時間:2017年09月06日 09:14:12   投稿:lqh  
這篇文章主要介紹了java 異常的實例詳解的相關(guān)資料,希望通過本文大家能徹底掌握java異常的使用方法,需要的朋友可以參考下

java 異常的實例詳解

1、異常的定義:程序在運行時出現(xiàn)不正常情況。

異常的劃分:

Error:嚴重的問題,對于error一般不編寫針對性的代碼對其進行處理。

Exception:非嚴重的問題,對于exception可以使用針對性的處理方式進行處理。

2、異常的處理:(固定格式)

try

{需要被檢測的代碼;}

catch(異常類 變量)

{處理異常的代碼(處理方式);}//這里應當是要有針對性的處理方式

finally

{一定會執(zhí)行的語句;}//通常是關(guān)閉資源的代碼,因為資源必須得到釋放

對多異常的處理方式:

1、聲明異常時,建議聲明更為具體的異常,這樣處理起來就更加的具體。

2、對方聲明幾個異常,就對應及格catch塊,不要定義多余的catch塊,如果多個catch塊中的異常出現(xiàn)繼承關(guān)系,父類異常catch塊放在最下面。

*在進行catch處理時,catch中一定要定義具體的處理方式。

*catch是用于處理異常,如果沒有catch就代表異常沒有被處理過,如果該異常是檢測時異常,那么必須聲明。

Runtime異常:(即運行時異常)

是Exception中一個特殊的子類異常。

如果在函數(shù)內(nèi)拋出該異常,函數(shù)上可以不用聲明,編譯一樣通過;如果在函數(shù)上聲明了該異常,調(diào)用者可以不用進行處理,編譯一樣通過。

之所以用在函數(shù)上聲明,是因為不需要讓調(diào)用者處理。

異常在子父類覆蓋中的體現(xiàn);

1,子類在覆蓋父類時,如果父類的方法拋出異常,那么子類的覆蓋方法,只能拋出父類的異?;蛘咴摦惓5淖宇?。
2,如果父類方法拋出多個異常,那么子類在覆蓋該方法時,只能拋出父類異常的子集。
3,如果父類或者接口的方法中沒有異常拋出,那么子類在覆蓋方法時,也不可以拋出異常。

如果子類方法發(fā)生了異常。就必須要進行try處理。絕對不能拋。

throws 和 throw 的區(qū)別:

throws:使用在函數(shù)上(小括號和大括號之間),后面跟的是異常類,可以跟多個。中間用“,”(逗號)隔開。

throw: 使用在函數(shù)內(nèi),后面跟的是異常對象。throw后面不能加語句,因為throw后面的語句無法執(zhí)行到。

習題練習:

/*需求:畢老師用電腦上課。 
分析: 
先寫出正常運行時的代碼:電腦開機后上課 
分析電腦會出現(xiàn)的問題,如:藍屏,冒煙 
此時需要自定義兩個“藍屏,冒煙“”自定義異常,封裝成對象。 
藍屏后,電腦重啟,之后繼續(xù)上課 
電腦冒煙后,出現(xiàn)了老師的問題,不能上課了,可以先做練習,畢老師將問題拋給校長。此時拋出的問題不再是電腦冒煙,而應該是老師不能上課了 
問題拋給校長后,校長catch后給出解決方案 
*/ 
class LanPingException extends Exception //自定義藍屏異常 
{ 
  LanPingException(String message) 
  { 
    super(message); 
  } 
} 
 
class MaoYanException extends Exception//自定義冒煙異常 
{ 
  MaoYanException(String message) 
  { 
    super(message); 
  } 
} 
 
class NoclassException extends Exception//自定義不能上課異常 
{ 
  NoclassException(String message) 
  { 
    super(message); 
  } 
} 
 
class Computer  
{ 
  private int state = 2;//硬性規(guī)定電腦狀態(tài) 
  //問題是在運行時發(fā)生的,所以得定義在運行時 
  public void run()throws LanPingException,MaoYanException//因為有可能出現(xiàn)錯誤,所以必須先聲明 
  { 
    if (state==2) 
    { 
      throw new LanPingException("電腦藍屏了。。。");//因為電腦不能自己處理,所以拋給了老師 
    } 
    if (state==3) 
    { 
      throw new MaoYanException("電腦冒煙了。。。"); 
    } 
    System.out.println("電腦開機,運行中。。。。");  
  } 
  public void restart() 
  { 
    System.out.println("電腦重啟。。。。"); 
  } 
} 
class Teacher 
{ 
  private String name; 
  private Computer comp; 
  Teacher(String name)  
  { 
    this.name = name; 
    comp = new Computer();//初始化時老師就有電腦了 
  } 
  public void test() 
  { 
    System.out.println("做練習"); 
  } 
  public void teach() throws NoclassException//標識應該是拋出去的異常,能夠進行處理的 
  { 
    try 
    { 
      comp.run();//講課,要先開啟電腦 
    } 
    catch (LanPingException e)//拋出了兩個異常,必須用兩個catch 
    { 
       
      System.out.println(e.getMessage()); 
      comp.restart(); 
    } 
    //這個問題拋給老師的話依舊無法解決,應該拋出對應的問題,這里老師拋出的問題應該是不能上課了 
    catch (MaoYanException e) 
    { 
      test();//不能上課,可以先布置練習,這個必須在throw 之前,因為throw之后的語句不會執(zhí)行 
      throw new NoclassException(e.getMessage()+",無法繼續(xù)上課"); 
    } 
     
    System.out.println(name+",上課中。。。。"); 
  } 
} 
 
class ExceptionTest 
{ 
  public static void main(String[] args) 
  { 
    Teacher t = new Teacher("畢老師");//指定一個老師 
    try 
    { 
       
      t.teach();//老師運行這個方法 
    } 
    catch (NoclassException e)//抓住對應的拋出的問題 
    { 
      System.out.println(e.toString());//打印出問題原因 
      System.out.println("自習或者放假");//處理辦法 
    } 
     
  } 
} 
當電腦狀態(tài)為1時,輸出為: 
電腦開機,運行中。。。。 
畢老師,上課中。。。。 
當電腦狀態(tài)為2時,輸出為: 
電腦藍屏了。。。 
電腦重啟。。。。 
畢老師,上課中。。。。 
當電腦狀態(tài)為3時,輸出為: 
做練習 
NoclassException: 電腦冒煙了。。。,無法繼續(xù)上課 
自習或者放假 

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Java異常處理UncaughtExceptionHandler使用實例代碼詳解

    Java異常處理UncaughtExceptionHandler使用實例代碼詳解

    當一個線程由于未捕獲異常即將終止時,Java虛擬機將使用thread . getuncaughtexceptionhandler()查詢線程的uncaughtException處理程序,并調(diào)用處理程序的uncaughtException方法,將線程和異常作為參數(shù)傳遞
    2023-03-03
  • 通過java api實現(xiàn)解壓縮zip示例

    通過java api實現(xiàn)解壓縮zip示例

    這篇文章主要介紹了通過java api實現(xiàn)解壓縮zip示例,需要的朋友可以參考下
    2014-04-04
  • SpringBoot如何接收前端傳遞參數(shù)

    SpringBoot如何接收前端傳遞參數(shù)

    這篇文章主要介紹了SpringBoot如何接收前端傳遞參數(shù),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-08-08
  • spring cloud gateway整合sentinel實現(xiàn)網(wǎng)關(guān)限流

    spring cloud gateway整合sentinel實現(xiàn)網(wǎng)關(guān)限流

    這篇文章主要介紹了spring cloud gateway整合sentinel實現(xiàn)網(wǎng)關(guān)限流,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • Java實用工具之StringJoiner詳解

    Java實用工具之StringJoiner詳解

    這篇文章主要介紹了Java實用工具之StringJoiner詳解,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • idea創(chuàng)建javaweb原生項目的實現(xiàn)示例

    idea創(chuàng)建javaweb原生項目的實現(xiàn)示例

    這篇文章主要介紹了idea創(chuàng)建javaweb原生項目的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • Java中的@PostConstruct注解用法詳解

    Java中的@PostConstruct注解用法詳解

    @PostConstruct注解是Java中一個強大的特性,它允許開發(fā)人員在Bean被構(gòu)造并且依賴被注入后執(zhí)行初始化邏輯,本文將從源碼和用法的角度深入解析@PostConstruct注解,探討其實現(xiàn)細節(jié)和實際應用
    2023-07-07
  • RocketMQ消息過濾與查詢的實現(xiàn)

    RocketMQ消息過濾與查詢的實現(xiàn)

    這篇文章主要介紹了RocketMQ消息過濾與查詢的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java中List根據(jù)map的某個key去重的代碼

    Java中List根據(jù)map的某個key去重的代碼

    今天小編就為大家分享一篇關(guān)于Java中List根據(jù)map的某個key去重的代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Java實現(xiàn)利用廣度優(yōu)先遍歷(BFS)計算最短路徑的方法

    Java實現(xiàn)利用廣度優(yōu)先遍歷(BFS)計算最短路徑的方法

    這篇文章主要介紹了Java實現(xiàn)利用廣度優(yōu)先遍歷(BFS)計算最短路徑的方法,實例分析了廣度優(yōu)先遍歷算法的原理與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04

最新評論