W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
Exception異常是在程序執(zhí)行期間出現(xiàn)的問題,異常提供了一種將控制權(quán)從程序的一部分轉(zhuǎn)移到另一部分的方法。 D異常處理基于三個關(guān)鍵字 try , catch 和 throw 。
假設(shè)一個塊會引發(fā)異常,則方法使用 try 和 catch 關(guān)鍵字的組合來捕獲異常,在可能產(chǎn)生異常的代碼周圍放置了一個try/catch塊。使用try/catch的語法如下
try {
//protected code
}
catch( ExceptionName e1 ) {
//catch block
}
catch( ExceptionName e2 ) {
//catch block
}
catch( ExceptionName eN ) {
//catch block
}
您可以列出多個 catch 語句以捕獲不同類型的異常,以防您的 try 塊在不同情況下引發(fā)多個異常。
可以使用 throw 語句在代碼塊內(nèi)的任何位置拋出異常, throw語句的操作數(shù)確定異常的類型,可以是任何表達(dá)式,表達(dá)式輸出的類型確定拋出的異常的類型。
以下示例在被零除條件發(fā)生時引發(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后面括號中的異常聲明。
try {
//protected code
}
catch( ExceptionName e ) {
//code to handle ExceptionName exception
}
上面的代碼捕獲了 ExceptionName 類型的異常,如果要指定catch塊應(yīng)處理在try塊中引發(fā)的任何類型的異常,則必須在括起異常聲明的括號之間放置省略號...,如下所示-
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號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: