溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

關(guān)于C++ 的異常處理,解答在這來看看吧~

發(fā)布時(shí)間:2020-08-09 13:05:50 來源:ITPUB博客 閱讀:138 作者:ruijing1207 欄目:編程語言

現(xiàn)如今使用計(jì)算機(jī)的人越來越多,從事計(jì)算機(jī)行業(yè)的人也與日俱增,那么從事計(jì)算機(jī)行業(yè)的第一個(gè)就要接觸的就是c++語言的,作為最基礎(chǔ)的入門級語言,關(guān)于它的異常處理您知道多少呢,跟隨小編的文章一起看看吧。

https://www.macz.com/mac/1151.html

C++ 異常處理

C++ 異常處理

異常是程序在執(zhí)行期間產(chǎn)生的問題。C++ 異常是指在程序運(yùn)行時(shí)發(fā)生的特殊情況,比如嘗試除以零的操作。

異常提供了一種轉(zhuǎn)移程序控制權(quán)的方式。C++ 異常處理涉及到三個(gè)關(guān)鍵字: try、catch、throw。

  • throw: 當(dāng)問題出現(xiàn)時(shí),程序會拋出一個(gè)異常。這是通過使用  throw 關(guān)鍵字來完成的。
  • catch: 在您想要處理問題的地方,通過異常處理程序捕獲異常。 catch 關(guān)鍵字用于捕獲異常。
  • try: try 塊中的代碼標(biāo)識將被激活的特定異常。它后面通常跟著一個(gè)或多個(gè) catch 塊。

如果有一個(gè)塊拋出一個(gè)異常,捕獲異常的方法會使用  try 和  catch 關(guān)鍵字。try 塊中放置可能拋出異常的代碼,try 塊中的代碼被稱為保護(hù)代碼。使用 try/catch 語句的語法如下所示:

關(guān)于C++ 的異常處理,解答在這來看看吧~

如果  try 塊在不同的情境下會拋出不同的異常,這個(gè)時(shí)候可以嘗試羅列多個(gè)  catch 語句,用于捕獲不同類型的異常。

拋出異常

您可以使用  throw 語句在代碼塊中的任何地方拋出異常。throw 語句的操作數(shù)可以是任意的表達(dá)式,表達(dá)式的結(jié)果的類型決定了拋出的異常的類型。

以下是嘗試除以零時(shí)拋出異常的實(shí)例:

關(guān)于C++ 的異常處理,解答在這來看看吧~

捕獲異常

catch 塊跟在  try 塊后面,用于捕獲異常。您可以指定想要捕捉的異常類型,這是由 catch 關(guān)鍵字后的括號內(nèi)的異常聲明決定的。

關(guān)于C++ 的異常處理,解答在這來看看吧~

上面的代碼會捕獲一個(gè)類型為  ExceptionName 的異常。如果您想讓 catch 塊能夠處理 try 塊拋出的任何類型的異常,則必須在異常聲明的括號內(nèi)使用省略號 ...,如下所示:

關(guān)于C++ 的異常處理,解答在這來看看吧~

下面是一個(gè)實(shí)例,拋出一個(gè)除以零的異常,并在 catch 塊中捕獲該異常。

關(guān)于C++ 的異常處理,解答在這來看看吧~

由于我們拋出了一個(gè)類型為  const char* 的異常,因此,當(dāng)捕獲該異常時(shí),我們必須在 catch 塊中使用 const char*。當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會產(chǎn)生下列結(jié)果:

Division by zero condition!

C++ 標(biāo)準(zhǔn)的異常

C++ 提供了一系列標(biāo)準(zhǔn)的異常,定義在 中,我們可以在程序中使用這些標(biāo)準(zhǔn)的異常。它們是以父子類層次結(jié)構(gòu)組織起來的,如下所示:

關(guān)于C++ 的異常處理,解答在這來看看吧~

定義新的異常

您可以通過繼承和重載  exception 類來定義新的異常。下面的實(shí)例演示了如何使用 std::exception 類來實(shí)現(xiàn)自己的異常:

關(guān)于C++ 的異常處理,解答在這來看看吧~

這將產(chǎn)生以下結(jié)果:

關(guān)于C++ 的異常處理,解答在這來看看吧~

在這里, what() 是異常類提供的一個(gè)公共方法,它已被所有子異常類重載。這將返回異常產(chǎn)生的原因。

希望小編的分享能夠幫助到您,了解更多Mac編程軟件教程,盡在macz.com!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI