最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 異常的實(shí)例詳解

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

java 異常的實(shí)例詳解

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

異常的劃分:

Error:嚴(yán)重的問(wèn)題,對(duì)于error一般不編寫(xiě)針對(duì)性的代碼對(duì)其進(jìn)行處理。

Exception:非嚴(yán)重的問(wèn)題,對(duì)于exception可以使用針對(duì)性的處理方式進(jìn)行處理。

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

try

{需要被檢測(cè)的代碼;}

catch(異常類(lèi) 變量)

{處理異常的代碼(處理方式);}//這里應(yīng)當(dāng)是要有針對(duì)性的處理方式

finally

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

對(duì)多異常的處理方式:

1、聲明異常時(shí),建議聲明更為具體的異常,這樣處理起來(lái)就更加的具體。

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

*在進(jìn)行catch處理時(shí),catch中一定要定義具體的處理方式。

*catch是用于處理異常,如果沒(méi)有catch就代表異常沒(méi)有被處理過(guò),如果該異常是檢測(cè)時(shí)異常,那么必須聲明。

Runtime異常:(即運(yùn)行時(shí)異常)

是Exception中一個(gè)特殊的子類(lèi)異常。

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

之所以用在函數(shù)上聲明,是因?yàn)椴恍枰屨{(diào)用者處理。

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

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

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

throws 和 throw 的區(qū)別:

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

throw: 使用在函數(shù)內(nèi),后面跟的是異常對(duì)象。throw后面不能加語(yǔ)句,因?yàn)閠hrow后面的語(yǔ)句無(wú)法執(zhí)行到。

習(xí)題練習(xí):

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

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

相關(guān)文章

  • SpringBoot項(xiàng)目請(qǐng)求不中斷動(dòng)態(tài)更新代碼的實(shí)現(xiàn)

    SpringBoot項(xiàng)目請(qǐng)求不中斷動(dòng)態(tài)更新代碼的實(shí)現(xiàn)

    在開(kāi)發(fā)中,有時(shí)候不停機(jī)動(dòng)態(tài)更新代碼熱部署是一項(xiàng)至關(guān)重要的功能,它可以在請(qǐng)求不中斷的情況下下更新代碼,這種方式不僅提高了開(kāi)發(fā)效率,還能加速測(cè)試和調(diào)試過(guò)程,本文將詳細(xì)介紹如何在 Spring Boot 項(xiàng)目在Linux系統(tǒng)中實(shí)現(xiàn)熱部署,特別關(guān)注優(yōu)雅關(guān)閉功能的實(shí)現(xiàn)
    2024-09-09
  • Java虛擬機(jī)之類(lèi)加載

    Java虛擬機(jī)之類(lèi)加載

    這篇文章主要介紹了Java虛擬機(jī)之類(lèi)加載,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • 使用ByteArrayOutputStream實(shí)現(xiàn)將數(shù)據(jù)寫(xiě)入本地文件

    使用ByteArrayOutputStream實(shí)現(xiàn)將數(shù)據(jù)寫(xiě)入本地文件

    這篇文章主要介紹了使用ByteArrayOutputStream實(shí)現(xiàn)將數(shù)據(jù)寫(xiě)入本地文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Netty中序列化的作用及自定義協(xié)議詳解

    Netty中序列化的作用及自定義協(xié)議詳解

    這篇文章主要介紹了Netty中序列化的作用及自定義協(xié)議詳解,Netty自身就支持很多種協(xié)議比如Http、Websocket等等,但如果用來(lái)作為自己的RPC框架通常會(huì)自定義協(xié)議,所以這也是本文的重點(diǎn),需要的朋友可以參考下
    2023-12-12
  • Java Druid連接池與Apache的DBUtils使用教程

    Java Druid連接池與Apache的DBUtils使用教程

    這篇文章主要介紹了Java Druid連接池與Apache的DBUtils使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-12-12
  • Springboot集成GraphicsMagick

    Springboot集成GraphicsMagick

    本文主要是教大家如何將GraphicsMagick命令行工具集成到Springboot項(xiàng)目中,便可以使用Java進(jìn)行圖片處理相關(guān)開(kāi)發(fā)。
    2021-05-05
  • Java 靜態(tài)綁定與動(dòng)態(tài)綁定深入分析

    Java 靜態(tài)綁定與動(dòng)態(tài)綁定深入分析

    這篇文章主要介紹了Java 靜態(tài)綁定與動(dòng)態(tài)綁定深入分析的相關(guān)資料,這里對(duì)java 的動(dòng)態(tài)綁定和靜態(tài)綁定做了詳細(xì)的介紹,對(duì)其進(jìn)行總結(jié)整理,需要的朋友可以參考下
    2016-11-11
  • java枚舉enum和Enum類(lèi)的使用

    java枚舉enum和Enum類(lèi)的使用

    本文主要介紹了java枚舉enum和Enum類(lèi)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 零基礎(chǔ)寫(xiě)Java知乎爬蟲(chóng)之抓取知乎答案

    零基礎(chǔ)寫(xiě)Java知乎爬蟲(chóng)之抓取知乎答案

    上篇文章我們已經(jīng)能把知乎的問(wèn)題抓出來(lái)了,但是答案還木有抓出來(lái)。這一回合,我們就連著把答案也一起從網(wǎng)站中摳出來(lái)=。=
    2014-11-11
  • 微信小程序 navigator 跳轉(zhuǎn)url傳遞參數(shù)

    微信小程序 navigator 跳轉(zhuǎn)url傳遞參數(shù)

    這篇文章主要介紹了 微信小程序 navigator 跳轉(zhuǎn)url傳遞參數(shù)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評(píng)論

湾仔区| 确山县| 贡山| 上高县| 西平县| 大石桥市| 离岛区| 老河口市| 鄄城县| 女性| 南华县| 抚顺市| 潼南县| 邯郸市| 蓬安县| 贵南县| 万州区| 托克逊县| 将乐县| 资中县| 竹北市| 肥乡县| 高州市| 德保县| 延安市| 吐鲁番市| 阿瓦提县| 贵德县| 民和| 博客| 临江市| 漳平市| 丽水市| 济源市| 鄄城县| 济南市| 赣榆县| 灵寿县| 丽江市| 会同县| 广德县|