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