在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C++/ D語(yǔ)言異常處理
類的訪問(wèn)修飾符
D語(yǔ)言運(yùn)算符
D語(yǔ)言邏輯運(yùn)算符
類指針
D語(yǔ)言元組
D語(yǔ)言指針
D語(yǔ)言模塊
D語(yǔ)言sizeof運(yùn)算符
D語(yǔ)言混合類型
D語(yǔ)言封裝
D語(yǔ)言條件編譯
類的靜態(tài)成員
D語(yǔ)言do...while循環(huán)
D語(yǔ)言結(jié)構(gòu)體
重載
D語(yǔ)言字符串-String
D語(yǔ)言決策語(yǔ)句
D語(yǔ)言接口
D語(yǔ)言for循環(huán)
D語(yǔ)言switch語(yǔ)句
D語(yǔ)言關(guān)聯(lián)數(shù)組
D語(yǔ)言范圍
D語(yǔ)言枚舉Enums
契約式編程
D語(yǔ)言并發(fā)
D語(yǔ)言開(kāi)發(fā)環(huán)境設(shè)置
D語(yǔ)言別名
D語(yǔ)言常值
D語(yǔ)言常量
D語(yǔ)言函數(shù)
D語(yǔ)言if嵌套語(yǔ)句
D語(yǔ)言循環(huán)
D語(yǔ)言概述,D語(yǔ)言是什么?
D語(yǔ)言運(yùn)算符優(yōu)先級(jí)
D語(yǔ)言continue語(yǔ)句
D語(yǔ)言異常處理
D語(yǔ)言break語(yǔ)句
D語(yǔ)言if...else語(yǔ)句
D語(yǔ)言類和對(duì)象
類繼承
D語(yǔ)言字符
D語(yǔ)言教程
D語(yǔ)言關(guān)系運(yùn)算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語(yǔ)言抽象類
D語(yǔ)言if語(yǔ)句
D語(yǔ)言賦值運(yùn)算符
D中算術(shù)運(yùn)算符
D語(yǔ)言類成員函數(shù)
D語(yǔ)言位運(yùn)算符
D語(yǔ)言變量
D語(yǔ)言數(shù)據(jù)類型
D語(yǔ)言文件I/O
D語(yǔ)言數(shù)組
一元運(yùn)算符重載
D語(yǔ)言嵌套switch語(yǔ)句
D語(yǔ)言基本語(yǔ)法
二元運(yùn)算符重載
this指針
D語(yǔ)言聯(lián)合體
D語(yǔ)言模板
D語(yǔ)言嵌套循環(huán)
D語(yǔ)言while循環(huán)

D語(yǔ)言異常處理

異常出了問(wèn)題的程序的執(zhí)行期間產(chǎn)生了。一個(gè)D程序異常是特殊情況一個(gè)程序運(yùn)行時(shí)所產(chǎn)生,如試圖除以零的響應(yīng)。

異常提供了一種從程序的一部分控制權(quán)轉(zhuǎn)移到另一個(gè)。 D程序異常處理是建立在三個(gè)關(guān)鍵詞: try, catch, 及throw.

  • throw: 一個(gè)程序拋出異常時(shí),問(wèn)題出現(xiàn)了。這是通過(guò)使用一個(gè)throw關(guān)鍵字。

  • catch: 一種程序,在要處理該問(wèn)題的計(jì)劃中的地位異常處理程序捕獲異常。catch關(guān)鍵字表示異常捕獲。

  • try: try塊標(biāo)識(shí)代碼塊的哪些特定的異常將被激活。它后跟一個(gè)或多個(gè)catch塊。

假設(shè)一個(gè)塊將拋出一個(gè)異常,一個(gè)方法捕獲使用try和catch關(guān)鍵字的組合異常。try/ catch塊放在圍繞,可能產(chǎn)生異常的代碼。try / catch塊中的代碼被稱為受保護(hù)的代碼,以及語(yǔ)法使用try/ catch語(yǔ)句如下所示:

try
{
   // protected code
}
catch( ExceptionName e1 )
{
   // catch block
}
catch( ExceptionName e2 )
{
   // catch block
}
catch( ExceptionName eN )
{
   // catch block
}

可以列出下多個(gè)catch語(yǔ)句來(lái)捕獲不同類型的異常的情況下,try塊在不同情況提出了多個(gè)異常。

引發(fā)異常:

異??梢栽谌魏蔚胤绞褂脪伋鲈趖hrow語(yǔ)句的代碼塊中。在throw語(yǔ)句的操作數(shù)確定一個(gè)類型的異常,可以是任何表達(dá)式,表達(dá)式的結(jié)果的類型決定拋出的異常的類型。

以下是零條件除法發(fā)生拋出異常的一個(gè)例子:

double division(int a, int b)
{
   if( b == 0 )
   {
      throw new Exception("Division by zero condition!");
   }
   return (a/b);
}

捕獲異常:

try塊中的catch塊下面的捕獲的任何異常??梢灾付ㄏ胍裁搭愋偷漠惓2蹲?,這是由以下關(guān)鍵字捕捉出現(xiàn)在括號(hào)中的異常聲明確定的。

try
{
   // protected code
}
catch( ExceptionName e )
{
   // code to handle ExceptionName exception
}

上面的代碼將捕獲一個(gè)異常的ExceptionName類型。如果您要指定一個(gè)catch塊應(yīng)該處理任何類型的被扔在一個(gè)try塊中的異常,必須把省略號(hào)...,內(nèi)附異常聲明如下括號(hào)之間:

try
{
   // protected code
}
catch(...)
{
   // code to handle any exception
}

下面是一個(gè)例子,它拋出一個(gè)除零異常,我們捕獲它在catch塊。

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

當(dāng)上面的代碼被編譯并執(zhí)行,它在讀取上一節(jié)中創(chuàng)建的文件,并產(chǎn)生以下結(jié)果:

Cannot divide by zero!
5