導航:首頁 > 編程語言 > trycatchthrowjava

trycatchthrowjava

發布時間:2023-07-13 19:10:25

java如何拋出異常

在方法中throw

㈡ java異常 throw和try-catch的關系

throw是把當前方法中出現的異常拋出去,自己不處理,處理異常交給要調用它的方法;try-catch是成對出現的,意思是在try中捕獲的異常馬上交給catch去處理

㈢ Java異常機制中用到的幾個關鍵字含義

一般來說,異常的關鍵字有:try、catch、finally、throw、throws。
網上的資料對這幾個關鍵字是這樣解釋的:
try: Opening exception-handling statement.
catch: Captures the exception.
finally: Runs its code before terminating the program.
throws: Lists the exceptions a method could throw.
Throw: Transfers control of the method to the exception handler.

try語句
try語句用大括弧{}指定了一段代碼,該段代碼可能會拋棄一個或多個例外。
catch語句
catch語句的參數類似於方法的聲明,包括一個例外類型和一個例外對象。例外類型必須為Throwable類的子類,它指明了catch語句所處理的例外類型,例外對象則由運行時系統在try所指定的代碼塊中生成並被捕獲,大括弧中包含對象的處理,其中可以調用對象的方法。
catch語句可以有多個,分別處理不同類的例外。Java運行時系統從上到下分別對每個catch語句處理的例外類型進行檢測,直到找到類型相匹配的catch語句為止。這里,類型匹配指catch所處理的例外類型與生成的例外對象的類型完全一致或者是它的父類,因此,catch語句的排列順序應該是從特殊到一般。也可以用一個catch語句處理多個例外類型,這時它的例外類型參數應該是這多個例外類型的父類,程序設計中要根據具體的情況來選擇catch語句的例外處理類型。
finally語句
try所限定的代碼中,當拋棄一個例外時,其後的代碼不會被執行。通過finally語句可以指定一塊代碼。無論try所指定的程序塊中拋棄或不拋棄例外,也無論catch語句的例外類型是否與所拋棄的例外的類型一致,finally所指定的代碼都要被執行,它提供了統一的出口。通常在finally語句中可以進行資源的清除工作。如關閉打開的文件等。
throws語句
throws總是出現在一個函數頭中,用來標明該成員函數可能拋出的各種異常。對大多數Exception子類來說,Java 編譯器會強迫你聲明在一個成員函數中拋出的異常的類型。如果異常的類型是Error或 RuntimeException, 或它們的子類,這個規則不起作用, 因為這在程序的正常部分中是不期待出現的。 如果你想明確地拋出一個RuntimeException,你必須用throws語句來聲明它的類型
throw語句
throw總是出現在函數體中,用來拋出一個異常。程序會在throw語句後立即終止,它後面的語句執行不到,然後在包含它的所有try塊中(可能在上層調用函數中)從里向外尋找含有與其匹配的catch子句的try塊。

㈣ JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意

throw 僅用於方法定義後面,指示該方法可能會拋出什麼異常,使用該方法的方法必須處理該異常,或者再次拋出。
throws 用於當程序判斷發生異常時,用該語句拋出異常,或處理異常時再次拋出異常。
//下面三個關鍵字就是處理異常

try {
//這里放可能會發生異常的語句

} catch(Exception e) {
//這里處理異常

} finally {
//這里的語句必然會得到執行,不管異常發省與否,
//用於關閉資料庫,關閉連接等收尾操作(非必要)

}

java異常的一個簡單例子,比如我有一個除法方法
public int divide(int a, int b) {
return a / b;
}
但是這就有一個問題,當b是0時,程序會報錯。
如果引入異常,改成這樣
public int divide(int a, int b) throws Exception {
if (b == 0) {
throw new Exception("b = 0");
}
return a / b;
}
那麼調用端該怎麼用呢
public class ExceptionTest {
public static void main(String[] args) {
ExceptionTest et = new ExceptionTest();
try {
System.out.println(et.divide(12, 0));
} catch (Exception e) {
System.out.println("0不能做被除數");
}
}

public int divide(int a, int b) throws Exception {
if (b == 0) {
throw new Exception("b = 0");
}
return a / b;
}
}
程序可以繼續執行,不會中斷。

㈤ JAVA語言如何進行異常處理,關鍵字throws,throw,try,catch,finally分別代表什麼意義在try塊中拋出異常嗎

  1. throws用在方法聲明中,表明當前方法在運行時會有異常拋出,需要在調用該方法的時候注意控制異常

  2. throw用在方法體內,手動製造一個異常,中斷代碼的繼續執行

  3. try-catch-finally是一起使用的

    當某段代碼在運行期間可能會發生異常而終止執行時,使用。

    結構為

    try

    {

    //可能發生異常的代碼

    }

    catch (異常類型 )

    {

    //異常發生時的處理方式

    }

    finally

    {

    //其他必須執行的語句

    }

    當try語句塊中的代碼在執行時發生異常,就會被catch捕獲,進入catch語句塊進行處理,如果沒有發生異常就繼續執行

    finally語句塊中的代碼是一些必須執行的語句,這里的代碼無論try中是否發生異常都會被執行

㈥ java中throw拋出的異常一定要用相應的catch塊處理嗎

throw拋出的異常可以有兩種處理辦法

  1. 自己使用try...catch()捕獲

  2. 使用throws拋給調用者

  3. 一般不要拋給main,虛擬機會直接將程序殺死,造成閃退

㈦ Java異常處理中關鍵字throws,throw,try,catch,finally分別代表什麼意義在try塊中可以拋出異常嗎

throws是用來聲明一個方法可能拋出的所有異常信息
throw則是指拋出的一個具體的異常類型。
通常在一個方法(類)的聲明處通過throws聲明方法(類)可能拋出的異常信息,而在方法(類)內部通過throw聲明一個具體的異常信息。
throws通常不用顯示的捕獲異常,可由系統自動將所有捕獲的異常信息拋給上級方法;
throw則需要用戶自己捕獲相關的異常,而後在對其進行相關包裝,最後再將包裝後的異常信息拋出。
對異常處理方式不同.throws對異常不處理,誰調用誰處理,throws的Exception的取值范圍要大於方法內部異常的最大范圍,而cathch的范圍又要大於throws的Exception的范圍;throw 主動拋出自定義異常類對象. throws拋出的是類,throw拋出的是對象.
在方法定義中表示的是陳述語氣,第三人稱單數,throw 顯然要加s。(throws 一般用作方法定義的子句)
在函數體中要用throw,實際上是祈使句+強調,等價於DO throw ....,do +動詞原形

throw 用於引發異常,可引發預定義異常和自定義異常。

I)異常中「throws」和「throw」的區別:

throw 是個「動詞」,緊接在try語句塊之後。
而throws 是「名詞」 ,用在函數方法名後 function A () throws Exception e {}
throw用在程序中明確表示這里拋出一個異常。throws用在方法聲明的地方,表示這個方法可能會拋出某異常。
throw用來拋出實際的異常, 後面要跟一個異常對象(實例), 是一個實際的語句
throws是用來聲明的, 加在方法聲明的後面, 後面跟一個異常類的名字, 表示一般性動作而不是特指某一個動作.

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

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

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

Throws是把異常返回給調用者,由調用者處理,調用者還是要try/catch,跑不掉的
catch中就一個簡單的SYSTEM.OUT.PRINTLN(…………);還有,連接資料庫時會連接不上,你也不知道是驅動問題、電腦問題還是網路問題,發給用戶,用戶也看不懂,所以統統throws給catch,提示請與管理員聯系。。。。。。這就簡單多了

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

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

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!");
}
}

很明顯,答案出來了:
invoke the method begin!
method begin!
catch Exception!

finally語句是任選的,try語句後至少要有一個catch或一個finally,finally語句為異常處理提供一個統一的出口,不論try代碼塊是否發生了異常事件,finally塊中的語句都會被執行
在覆蓋的方法中聲明異常
在子類中,如果要覆蓋父類的一個方法,或父類中的方法聲明了throws異常,則子類的方法也可以拋出異常,但切記子類方法拋出的異常只能是父類方法拋出的異常的同類或子類。
如:
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) {

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

}
}

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

throw寫在方法體內, throws寫在方法名的後面
throw關鍵字的格式:throw new ArithmeticException(); 拋出一個異常,這些異常可以使unchecked exception(也就是RuntimeException),也可以是checked execption. throw必須有一個捕獲該異常的try/catch語句
throws關鍵字的格式
private void arrayMethod(int[] arr)
throws ,
ArithmeticException {
// Body
}
throws子句列出了方法可能拋出的異常類型,除了Error和RuntimeException異常,方法中可能拋出的異常必須在throws列表中聲明,否則就會出現編譯錯誤。
例如:假如方法中可能拋出IllegalAccessException(屬於checked execption)則必須在throws列表中聲明。

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

還有一些是庫方法只throw 沒有處理的,所以表面上你看到沒有throw也catch到異常

閱讀全文

與trycatchthrowjava相關的資料

熱點內容
全能掃描加密文檔忘記密碼怎麼辦 瀏覽:68
極品飛車ol安卓版為什麼要關服 瀏覽:271
學生伺服器怎麼選 瀏覽:460
mac系統本身編譯器 瀏覽:147
頭條app如何設置橫屏模式 瀏覽:357
clion怎麼使用終端編譯 瀏覽:766
伺服器地址部署到公網 瀏覽:492
新桑塔納安卓大屏導航怎麼拆 瀏覽:382
程序員送給女友的禮物 瀏覽:430
ftp命令行查看文件數量 瀏覽:496
linux查看設備的命令 瀏覽:827
pythongolang學哪個 瀏覽:349
金蝶加密鎖驅動下載 瀏覽:300
python編程基於自然語言處理庫 瀏覽:133
javaseruntime 瀏覽:902
cad如何將命令放在滑鼠旁邊 瀏覽:746
程序員對粉色 瀏覽:125
編譯器命令java 瀏覽:989
雲伺服器怎麼數據同步 瀏覽:685
c盤文件修復命令語 瀏覽:966