欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
關(guān)于java異常處理的幾個(gè)關(guān)鍵字 try catch/throw/throws
關(guān)于java異常處理的幾個(gè)關(guān)鍵字 try catch/throw/throws
2009-01-19 10:35
throws是用來(lái)聲明一個(gè)方法可能拋出的所有異常信息
throw則是指拋出的一個(gè)具體的異常類(lèi)型。
通常在一個(gè)方法(類(lèi))的聲明處通過(guò)throws聲明方法(類(lèi))可能拋出的異常信息,而在方法(類(lèi))內部通過(guò)throw聲明一個(gè)具體的異常信息。
throws通常不用顯示的捕獲異常,可由系統自動(dòng)將所有捕獲的異常信息拋給上級方法;
throw則需要用戶(hù)自己捕獲相關(guān)的異常,而后在對其進(jìn)行相關(guān)包裝,最后再將包裝后的異常信息拋出。
對異常處理方式不同.throws對異常不處理,誰(shuí)調用誰(shuí)處理,throws的Exception的取值范圍要大于方法內部異常的最大范圍,而cathch的范圍又要大于throws的Exception的范圍;throw 主動(dòng)拋出自定義異常類(lèi)對象. throws拋出的是類(lèi),throw拋出的是對象.

在方法定義中表示的是陳述語(yǔ)氣,第三人稱(chēng)單數,throw 顯然要加s。(throws 一般用作方法定義的子句)
在函數體中要用throw,實(shí)際上是祈使句+強調,等價(jià)于DO throw ....,do +動(dòng)詞原形

throw 用于引發(fā)異常,可引發(fā)預定義異常和自定義異常。

I)異常中“throws”和“throw”的區別:

throw 是個(gè)“動(dòng)詞”,緊接在try語(yǔ)句塊之后。
而throws 是“名詞” ,用在函數方法名后 function A () throws Exception e {}
throw用在程序中明確表示這里拋出一個(gè)異常。throws用在方法聲明的地方,表示這個(gè)方法可能會(huì )拋出某異常。
throw用來(lái)拋出實(shí)際的異常, 后面要跟一個(gè)異常對象(實(shí)例), 是一個(gè)實(shí)際的語(yǔ)句
throws是用來(lái)聲明的, 加在方法聲明的后面, 后面跟一個(gè)異常類(lèi)的名字, 表示一般性動(dòng)作而不是特指某一個(gè)動(dòng)作.

使用throws是來(lái)說(shuō)明,當前的函數會(huì )拋出一個(gè)異常。
在一般的情況下,你調用的一些函數會(huì )拋出一些異常。但是你又不想在當前的context中去處理它,就可以聲明該函數會(huì )拋出該異常,這樣你就不用去try-catch它了。當出現該異常,該函數會(huì )拋出此異常,讓上一層的函數去處理。throws也稱(chēng)異常規范
public static h() throws
{
     try
     {
         a.g();
     }
     catch(Exception e)
     {
         throw e;
     }
}
因為你沒(méi)有對這個(gè)異常處理,而是簡(jiǎn)單的拋出了。
而單純的聲明
public static h() throws
{
     a.g();
}
也會(huì )拋出這個(gè)異常
II)try catch \throws \throw

throws如果發(fā)生了對應的錯誤后,下邊的的確不會(huì )被執行;
try catch的理解應該辯證點(diǎn)看:如果catch后沒(méi)有再次throw出去,那會(huì )繼續執行;要想不執行必須throw處理
throws   拋出異常,解決不了再向上,直道碰到能解決這個(gè)異常的處理程序,就好像你的上司讓你執行一項任務(wù),中途你遇到問(wèn)題不知道如何解決,你把問(wèn)題返還給你的上司,認為既然是T分配的任務(wù)就該知道如何解決這個(gè)問(wèn)題,你的上司無(wú)法解決同樣把它送給經(jīng)理解決,依次向上,直到有人能解決這個(gè)問(wèn)題為止(不想自己另外寫(xiě)代碼處理異常時(shí)非常有用)
try catch    則是考慮到try包含這段代碼可能會(huì )遇到這種異常,直接用catch捕獲處理,catch包含的代碼為處理代碼

throws 只是把一個(gè)異常拋出去了,如果你的上層代碼有處理方式,就由上層代碼來(lái)處理這個(gè)異常。
而try/catch對是清楚的知道該操作可能出現什么異常,同時(shí)在catch塊中應該有處理的方法。
而且還有一種方式就是try/catch/finaly的方式。

Throws是把異常返回給調用者,由調用者處理,調用者還是要try/catch,跑不掉的
catch中就一個(gè)簡(jiǎn)單的SYSTEM.OUT.PRINTLN(…………);還有,連接數據庫時(shí)會(huì )連接不上,你也不知道是驅動(dòng)問(wèn)題、電腦問(wèn)題還是網(wǎng)絡(luò )問(wèn)題,發(fā)給用戶(hù),用戶(hù)也看不懂,所以統統throws給catch,提示請與管理員聯(lián)系。。。。。。這就簡(jiǎn)單多了

throws 寫(xiě)在方法簽名后,
throw 寫(xiě)在方法體內,可以寫(xiě)在if()....
也可以catch住一個(gè)exception后立刻又把他throw 出去,什么處理也不做,還可以catch住后throw new 一個(gè)你自己定義的exception ....

throws 就是把異常拋出,但是在以后要不有個(gè)catch接受,要不就拋給主函數.就是逐級往上一級拋,直到有一個(gè)接受他的

Throws拋出異常交給調用該方法的方法 處理,即:
public class Test{
    public static void main(String[] args){
        Test2 test2 = new Test2();
        try{
           System.out.println("invoke the method begin!");
           test2.method();
           System.out.println("invoke the method end!");
        }catch(Exception e){
           System.out.println("catch Exception!");
        }
    }
}

class Test2{
    public void method() throws Exception{
        System.out.println("method begin!");
        int a = 10;
        int b = 0;
        int c = a/b;
        System.out.println("method end!");
    }
}

很明顯,答案出來(lái)了:
invoke the method begin!
method begin!
catch Exception!

finally語(yǔ)句是任選的,try語(yǔ)句后至少要有一個(gè)catch或一個(gè)finally,finally語(yǔ)句為異常處理提供一個(gè)統一的出口,不論try代碼塊是否發(fā)生了異常事件,finally塊中的語(yǔ)句都會(huì )被執行
在覆蓋的方法中聲明異常
在子類(lèi)中,如果要覆蓋父類(lèi)的一個(gè)方法,或父類(lèi)中的方法聲明了throws異常,則子類(lèi)的方法也可以?huà)伋霎惓?,但切記子?lèi)方法拋出的異常只能是父類(lèi)方法拋出的異常的同類(lèi)或子類(lèi)。
如:
import java.io.*;
class A {
public void methodA()throws IOException{
.....
}
}
class B1 extends A {
public void methodA()throws FileNotFoundException{
....}
}
class B2 extends A {
public void methodA()throws Exception{//Error
....}
}


public void method() throws Exception {
try {
      具體程序
} catch(Exception ex) {

}
}
如果具體程序出錯的話(huà),將處理下面程序體中catch的地方,這個(gè)時(shí)候throws Exception 其實(shí)是沒(méi)有意義的。
public void method() throws Exception {
try {
      具體程序
} catch(FileNotFoundException ex) {

}
}

如果具體程序出錯的話(huà),且是FileNotFoundException 的情況下,將處理下面程序體中catch的地方處理。
這個(gè)時(shí)候FileNotFoundException 以外的Exception 將通過(guò) throws Exception ,throw到上一層。

throw寫(xiě)在方法體內, throws寫(xiě)在方法名的后面
throw關(guān)鍵字的格式:throw new ArithmeticException(); 拋出一個(gè)異常,這些異??梢允箄nchecked exception(也就是RuntimeException),也可以是checked execption. throw必須有一個(gè)捕獲該異常的try/catch語(yǔ)句
throws關(guān)鍵字的格式
private void arrayMethod(int[] arr)
           throws ArrayIndexOutOfBoundsException,
                  ArithmeticException {
     //   Body
}
throws子句列出了方法可能拋出的異常類(lèi)型,除了Error和RuntimeException異常,方法中可能拋出的異常必須在throws列表中聲明,否則就會(huì )出現編譯錯誤。
例如:假如方法中可能拋出IllegalAccessException(屬于checked execption)則必須在throws列表中聲明。

系統異常是默認拋出的,自己定義的異常要顯示拋出

還有一些是庫方法只throw 沒(méi)有處理的,所以表面上你看到?jīng)]有throw也catch到異常

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
開(kāi)發(fā)項目中碰見(jiàn)異常情況怎么辦?
try-catch和throw,throws的區別和聯(lián)系
java try、catch、finally及finally執行順序詳解
關(guān)于java異常處理機制的深入理解
Java中的異常、斷言、日志【草稿上】
Java 中的異常和處理詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久