IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
Java為我們定義了非常多的異常處理,當(dāng)程序運(yùn)行出現(xiàn)問(wèn)題之后,Java會(huì)將異常信息打印出來(lái),我們可以很直觀的看到問(wèn)題的源頭和原因,但是在我們開發(fā)中,會(huì)遇到各式各樣的問(wèn)題,Java原有定義的異常經(jīng)常會(huì)不滿足我們的使用,這時(shí)候我們就可以自定義一些異常,當(dāng)程序運(yùn)行過(guò)程中出現(xiàn)某些情況的時(shí)候,可以將我們自定義的異常拋出,自定義的異常信息中可以包含我們當(dāng)前所遇到的情況詳情,這樣我們就可以很明確的知道了那塊發(fā)生了什么問(wèn)題或者知道那塊不滿足我們的預(yù)期要求。
自定義的異常類和普通類一樣,只要繼承于Exception或者Exception子類即可,我們可以在自定義的類里面重寫構(gòu)造函數(shù),函數(shù)的參數(shù)為錯(cuò)誤的原因,并且調(diào)用父類的構(gòu)造函數(shù),例如:publice MyException extends Exception { public MyException(String message) {super.(message)}},定義好異常之后,我們可以在程序運(yùn)行到某一步之后,拋出該異常,可以方便我們查找問(wèn)題。
自定義的異常和系統(tǒng)異常的使用方法一致,都是使用throw new MyException("密碼不正確");進(jìn)行異常的拋出。拋出該異常之后,我們可以在調(diào)用含有該異常的方法的時(shí)候,使用try {} catch(MyException e) {}進(jìn)行捕獲處理,當(dāng)然我們也可以講異常繼續(xù)往上一級(jí)進(jìn)行拋,讓上一級(jí)的調(diào)用者進(jìn)行處理,將異常繼續(xù)往上拋的方式和系統(tǒng)異常一樣,在方法的后面使用throws拋向上一級(jí)。
剛才說(shuō)了自定義的異常和普通類一樣,那么自定義的異常也是可以被繼承,我們創(chuàng)建兩個(gè)自定義的異常 ParentException和ChildException,其中ChildException繼承于ParentException,在我們開發(fā)中,經(jīng)常會(huì)有不同的情況進(jìn)行不同的處理,例如在一個(gè)方法中可能出現(xiàn)ChildException,ParentException,Exception三種異常,我們使用try {} catch(Exception e){}進(jìn)行捕獲的時(shí)候,我們需要按照由子到父的捕獲順序,也就是說(shuō)我們捕獲異常的順序?yàn)镃hildException, ParentException, Exception,格式為 try {} catch (ChildException e){} catch (ParentException e){} catch (Exception e){},如果我們的調(diào)用順序顛倒之后,程序無(wú)論發(fā)生任何異常都只會(huì)被Exception捕獲,不會(huì)被子異常類捕獲,原因是當(dāng)程序catch到一個(gè)異常之后,就不會(huì)繼續(xù)往下進(jìn)行,而Exception是異常類的父類,只要發(fā)生異常就會(huì)被它捕獲,所以后面的不會(huì)繼續(xù)執(zhí)行,所以在捕獲異常的時(shí)候,順序非常重要,否則程序打印的異常會(huì)和我們預(yù)期的不一樣。
>>本文地址:http://m.hqfphsz.com/zhuanye/2020/48472.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個(gè)方向的工作?
07月15日Java
咨詢/試聽(tīng)07月15日Python+人工智能
咨詢/試聽(tīng)07月15日Web前端
咨詢/試聽(tīng)07月15日UI設(shè)計(jì)
咨詢/試聽(tīng)07月15日大數(shù)據(jù)
咨詢/試聽(tīng)07月15日Java
咨詢/試聽(tīng)07月15日Python+人工智能
咨詢/試聽(tīng)07月15日Web前端
咨詢/試聽(tīng)07月15日UI設(shè)計(jì)
咨詢/試聽(tīng)07月15日大數(shù)據(jù)
咨詢/試聽(tīng)