W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Exception異常是在程序執(zhí)行期間出現(xiàn)的問(wèn)題,異常提供了一種將控制權(quán)從程序的一部分轉(zhuǎn)移到另一部分的方法。 D異常處理基于三個(gè)關(guān)鍵字 try , catch 和 throw 。
假設(shè)一個(gè)塊會(huì)引發(fā)異常,則方法使用 try 和 catch 關(guān)鍵字的組合來(lái)捕獲異常,在可能產(chǎn)生異常的代碼周圍放置了一個(gè)try/catch塊。使用try/catch的語(yǔ)法如下
try {
//protected code
}
catch( ExceptionName e1 ) {
//catch block
}
catch( ExceptionName e2 ) {
//catch block
}
catch( ExceptionName eN ) {
//catch block
}
您可以列出多個(gè) catch 語(yǔ)句以捕獲不同類型的異常,以防您的 try 塊在不同情況下引發(fā)多個(gè)異常。
可以使用 throw 語(yǔ)句在代碼塊內(nèi)的任何位置拋出異常, throw語(yǔ)句的操作數(shù)確定異常的類型,可以是任何表達(dá)式,表達(dá)式輸出的類型確定拋出的異常的類型。
以下示例在被零除條件發(fā)生時(shí)引發(fā)異常-
double division(int a, int b) {
if( b == 0 ) {
throw new Exception("Division by zero condition!");
}
return (a/b);
}
try 塊之后的 catch 塊捕獲任何異常,您可以指定要捕獲的異常類型,這取決于關(guān)鍵字catch后面括號(hào)中的異常聲明。
try {
//protected code
}
catch( ExceptionName e ) {
//code to handle ExceptionName exception
}
上面的代碼捕獲了 ExceptionName 類型的異常,如果要指定catch塊應(yīng)處理在try塊中引發(fā)的任何類型的異常,則必須在括起異常聲明的括號(hào)之間放置省略號(hào)...,如下所示-
try {
//protected code
}
catch(...) {
//code to handle any exception
}
下面的示例引發(fā)除以零的異常。它被捕獲在捕獲塊中。
import std.stdio;
import std.string;
string division(int a, int b) {
string result="";
try {
if( b == 0 ) {
throw new Exception("Cannot divide by zero!");
} else {
result=format("%s",a/b);
}
} catch (Exception e) {
result=e.msg;
}
return result;
}
void main () {
int x=50;
int y=0;
writeln(division(x, y));
y=10;
writeln(division(x, y));
}
編譯并執(zhí)行上述代碼后,它將讀取上一部分中創(chuàng)建的文件,并產(chǎn)生以下輸出-
Cannot divide by zero!
5
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: