成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

簡述Java中throw-throws異常拋出

瀏覽:3日期:2023-02-13 18:11:35
目錄一、throws拋出異常Throws拋出異常的規則:二、使用throw拋出異常三、比較3.1 在聲明方法時候拋出異常 3.2 在方法中拋出異常

任何Java代碼都可以拋出異常,如:自己編寫的代碼、來自Java開發環境包中代碼,或者Java運行時系統。無論是誰,都可以通過Java的throw語句拋出異常。從方法中拋出的任何異常都必須使用throws子句。

一、throws拋出異常

如果一個方法可能會出現異常,但沒有能力處理這種異常,可以在方法聲明處用throws子句來聲明拋出異常。例如汽車在運行時可能會出現故障,汽車本身沒辦法處理這個故障,那就讓開車的人來處理。

throws語句用在方法定義時聲明該方法要拋出的異常類型,如果拋出的是Exception異常類型,則該方法被聲明為拋出所有的異常。多個異常可使用逗號分割。throws語句的語法格式為:

methodname throws Exception1,Exception2,..,ExceptionN{ }

方法名后的throws Exception1,Exception2,…,ExceptionN 為聲明要拋出的異常列表。當方法拋出異常列表的異常時,方法將不對這些類型及其子類類型的異常作處理,而拋向調用該方法的方法,由他去處理。

使用throws關鍵字將異常拋給調用者后,如果調用者不想處理該異常,可以繼續向上拋出,但最終要有能夠處理該異常的調用者。

Throws拋出異常的規則: 如果是不可查異常(unchecked exception),即Error、RuntimeException或它們的子類,那么可以不使用throws關鍵字來聲明要拋出的異常,編譯仍能順利通過,但在運行時會被系統拋出。 如果一個方法可能出現可查異常(checked exception),要么用try-catch語句捕獲,要么用throws子句聲明將它拋出,否則會導致編譯錯誤。 只有當拋出了異常時,該方法的調用者才必須處理或者重新拋出該異常。當方法的調用者無力處理該異常的時候,應該繼續拋出。 調用方法必須遵循任何可查異常的處理和聲明規則。若覆蓋一個方法,則不能聲明與覆蓋方法不同的異常。聲明的任何異常必須是被覆蓋方法所聲明異常的同類或子類。二、使用throw拋出異常

throw總是出現在方法體中,用來拋出一個Throwable類型的異常。程序會在throw語句后立即終止,它后面的語句執行不到,然后在包含它的所有try塊中(可能在上層調用函數中)從里向外尋找含有與其匹配的catch子句的try塊。

我們知道,異常是異常類的實例對象,我們可以創建異常類的實例對象通過throw語句拋出。該語句的語法格式為:

throw new exceptionname;

例如拋出一個IOException類的異常對象:

throw new IOException;

要注意的是,throw 拋出的只能夠是可拋出類Throwable 或者其子類的實例對象。下面的操作是錯誤的,因為String 不是Throwable 類的子類。

throw new String('exception');

如果拋出了可查異常,則還應該在方法頭部聲明方法可能拋出的異常類型。該方法的調用者也必須檢查處理拋出的異常。

如果所有方法都層層上拋獲取的異常,最終JVM會進行處理,處理也很簡單,就是打印異常消息和堆棧信息。如果拋出的是Error或RuntimeException,則該方法的調用者可選擇處理該異常。

throw的示例:

public class TestException { public static void main(String[] args) { int a = 6; int b = 0; try { if (b == 0) { throw new ArithmeticException(); //'除數為0'等ArithmeticException,是RuntimException的子類。而運行時異常將由運行時系統自動拋出,不需要使用throw語句,這里把throw new ArithmeticException()去掉也是不影響運行結果的。 } System.out.println('a/b的值是:' + a / b); } catch (ArithmeticException e) { System.out.println('程序出現異常,變量b不能為0。'); } System.out.println('程序正常結束。'); } }

輸出結果為:

程序出現異常,變量b不能為0。程序正常結束。

三、比較3.1 在聲明方法時候拋出異常

為什么要在聲明方法拋出異常?答:方法是否拋出異常與方法返回值的類型一樣重要。假設方法拋出異常卻沒有聲明該方法將拋出異常,那么客戶程序員可以調用這個方法而且不用編寫處理異常的代碼。那么,一旦出現異常,那么這個異常就沒有合適的異常控制器來解決。

為什么拋出的異常一定是可檢查異常(除了Exception中的RuntimeException及其子類以外,其他的Exception類及其子類)?答:RuntimeException與Error可以在任何代碼中產生,它們不需要由程序員顯示的拋出,一旦出現錯誤,那么相應的異常會被自動拋出。遇到Error,程序員一般是無能為力的;遇到RuntimeException,那么一定是程序存在邏輯錯誤,要對程序進行修改;只有可檢查異常才是程序員所關心的,程序應該且僅應該拋出或處理可檢查異常。而可檢查異常是由程序員拋出的,這分為兩種情況:客戶程序員調用會拋出異常的庫函數;客戶程序員自己使用throw語句拋出異常。

注意: 覆蓋父類某方法的子類方法不能拋出比父類方法更多的異常,所以,有時設計父類的方法時會聲明拋出異常,但實際的實現方法的代碼卻并不拋出異常,這樣做的目的就是為了方便子類方法覆蓋父類方法時可以拋出異常。

3.2 在方法中拋出異常

拋出什么異常?答:對于一個異常對象,真正有用的信息是異常的對象類型,而異常對象本身毫無意義。比如一個異常對象的類型是ClassCastException,那么這個類名就是唯一有用的信息。所以,在選擇拋出什么異常時,最關鍵的就是選擇異常的類名能夠明確說明異常情況的類。

異常對象通常有兩種構造函數:一種是無參數的構造函數;另一種是帶一個字符串的構造函數,這個字符串將作為這個異常對象除了類型名以外的額外說明。

使用finally塊釋放資源finally關鍵字保證無論程序使用任何方式離開try塊,finally中的語句都會被執行。因此,當你需要一個地方來執行在任何情況下都必須執行的代碼時,就可以將這些代碼放入finally塊中。當你的程序中使用了外界資源,如數據庫連接,文件等,必須將釋放這些資源的代碼寫入finally塊中。

注意: 在finally塊中不能拋出異常。JAVA異常處理機制保證無論在任何情況下必須先執行finally塊然后再離開try塊,因此在try塊中發生異常的時候,JAVA虛擬機先轉到finally塊執行finally塊中的代碼,finally塊執行完畢后,再向外拋出異常。如果在finally塊中拋出異常,try塊捕捉的異常就不能拋出,外部捕捉到的異常就是finally塊中的異常信息,而try塊中發生的真正的異常堆棧信息則丟失了。

到此這篇關于簡述Java中throw-throws異常拋出的文章就介紹到這了,更多相關Java throw-throws異常拋出內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
午夜免费久久看| 国语自产精品视频在线看8查询8| 成人网男人的天堂| 欧美精品在线一区二区三区| 午夜精品一区二区三区三上悠亚| 亚洲激情啪啪| 中文字幕中文乱码欧美一区二区 | 中文欧美字幕免费| 91网站在线播放| 欧美日本一区二区三区四区| 蜜臂av日日欢夜夜爽一区| 色婷婷综合久久久久中文| 午夜久久久久久久久| 久久久蜜桃一区二区人| 丝袜诱惑制服诱惑色一区在线观看| 国产精品亚洲综合| 一区二区三区资源| 国产精品有限公司| 亚洲永久精品大片| 亚洲一区观看| 亚洲国产精品精华液网站| 国产一区二区三区久久久久久久久 | 免费在线看一区| 免费在线日韩av| 污片在线观看一区二区| 久久综合图片| 麻豆91在线观看| 欧美午夜精品久久久久久孕妇| 蜜桃av噜噜一区二区三区小说| 狂野欧美一区| 老司机精品视频导航| 欧美色欧美亚洲另类二区| 激情久久五月天| 这里只有精品电影| 高清不卡在线观看| 欧美精品久久久久久久多人混战| 日本特黄久久久高潮| 久热综合在线亚洲精品| 日本va欧美va瓶| 欧美剧情片在线观看| 国产成人a级片| 久久久精品黄色| 国产精品v欧美精品v日韩精品| 亚洲日本在线看| 午夜综合激情| 久久机这里只有精品| 日韩欧美一区中文| 欧美凹凸一区二区三区视频| 亚洲丝袜另类动漫二区| 美女精品在线| 美腿丝袜在线亚洲一区 | 日韩一区日韩二区| 国产九区一区在线| 乱一区二区av| 日韩三级视频在线看| 欧美在线黄色| 一区二区三区四区不卡视频| 欧美在线三级电影| 99久久久免费精品国产一区二区| 国产精品久久久久久一区二区三区| 国产一区91| 国内精品久久久久影院色| 久久综合狠狠综合| 禁久久精品乱码| 亚洲国产日韩精品| 欧美精品亚洲一区二区在线播放| 99精品偷自拍| 亚洲一区二区在线播放相泽| 欧美日本在线一区| 欧美久久99| 日韩国产欧美一区二区三区| 日韩欧美一级在线播放| 亚洲一级电影| 美女免费视频一区二区| 久久久精品天堂| 香蕉久久夜色精品国产| 狠狠狠色丁香婷婷综合激情 | 欧美专区一区二区三区| 国产一区二区三区免费观看| 国产偷国产偷精品高清尤物| 亚洲永久字幕| 看片的网站亚洲| 日本一区二区三区四区| 欧美中文字幕| 波多野结衣亚洲| 亚洲福利一区二区| 日韩欧美的一区| 国产精品外国| 国产 日韩 欧美大片| 亚洲欧美一区二区三区极速播放| 欧美日韩夫妻久久| 亚洲国产精品第一区二区| 久久综合综合久久综合| 国产欧美视频一区二区| 欧美在线你懂的| 国产精品www994| 久久er精品视频| 中文字幕亚洲成人| 4438x成人网最大色成网站| 亚洲毛片网站| 成人黄色在线视频| 亚洲444eee在线观看| 久久综合国产精品| 日本高清不卡aⅴ免费网站| 91色视频在线| 免费在线视频一区| 亚洲日本欧美天堂| 欧美精品电影在线播放| 国产伦精品一区二区三区四区免费 | 成人白浆超碰人人人人| 亚洲aaa精品| 中文字幕av一区二区三区高| 欧美性色欧美a在线播放| 伊人久久亚洲影院| 成人午夜精品一区二区三区| 五月天一区二区| 国产精品久久午夜夜伦鲁鲁| 91精品国产一区二区| 久久精品成人| 黄色成人av网站| 成人做爰69片免费看网站| 五月天精品一区二区三区| 亚洲国产精品精华液2区45| 欧美喷水一区二区| 国内综合精品午夜久久资源| 国产精品456| 日韩成人免费电影| 成人免费一区二区三区视频| 精品成人一区二区三区| 欧美午夜影院一区| 亚洲欧美精品| 亚洲第一在线| 欧美日韩国产精品一卡| 国产精品123区| 日韩av中文在线观看| 亚洲精品国产a| 国产精品视频一区二区三区不卡| 日韩精品资源二区在线| 欧洲精品中文字幕| 国产精品外国| 亚洲精品极品| 欧美日韩另类丝袜其他| 国产1区2区3区精品美女| 经典三级在线一区| 天天综合天天做天天综合| 亚洲免费毛片网站| 亚洲欧洲精品天堂一级| 亚洲国产精品黑人久久久| 久久蜜桃av一区二区天堂| 日韩欧美黄色影院| 欧美喷潮久久久xxxxx| 91黄色免费看| 久久综合中文色婷婷| 国产日韩精品一区观看| 亚洲性视频h| 韩日精品视频| 欧美成人综合| 成人毛片视频在线观看| 国产制服丝袜一区| 久久精品国产999大香线蕉| 日产精品久久久久久久性色| 亚洲国产精品久久不卡毛片| 尤物视频一区二区| 亚洲人成在线观看一区二区| 国产精品视频你懂的| 国产精品无人区| 欧美极品aⅴ影院| 久久久久久久久97黄色工厂| 久久一区二区三区国产精品| 精品国产1区2区3区| 久久在线观看免费| 久久综合给合久久狠狠狠97色69| 欧美大肚乱孕交hd孕妇| 日韩精品中文字幕在线一区| 欧美成va人片在线观看| 亚洲精品一区二区三区四区高清| 欧美成人伊人久久综合网| 日韩无一区二区| 精品国产百合女同互慰| 日韩精品中文字幕一区二区三区 | 国产精品少妇自拍| 亚洲日本乱码在线观看| 一区二区三区四区蜜桃| 亚洲二区视频在线| 天天av天天翘天天综合网色鬼国产 | 国产女人aaa级久久久级 | 蜜臀av性久久久久蜜臀av麻豆| 免费观看成人av| 精品一区二区三区免费毛片爱| 狠狠色丁香婷婷综合| 国产成人啪免费观看软件| 成人动漫一区二区| 91麻豆免费在线观看| 欧美日韩亚洲一区三区| 亚洲第一区色| 欧美中文字幕| 欧美日韩综合一区| 日韩一区二区三区电影在线观看 | 黄一区二区三区| 国产成人在线看|