LONGEPASS
電腦軟體設計(C++)/C++/Q102
中等
正確率 -
Q102.

下列之區塊,何者可以捕捉任何型態之例外?

電腦軟體設計(C++) · 乙級 · C++ · Q102

難易度分析

3 / 5

本題要求考生能精確區分通用異常捕捉語法與特定類別捕捉的差異,並能辨識出無效的語法選項,具有一定的概念辨析度。

正確答案:②catch(...){ }

② catch(...){ }:catch(...){ } 是 C++ 標準定義的萬用例外處理器,三個點(省略號)表示可攔截任何型別的例外,包含基本型別、自訂類別及系統例外,是捕捉所有例外的唯一正確寫法。

錯誤選項解析

  • ① catch(){ }:catch(){ } 為無效語法,C++ 的 catch 子句必須指定例外型別或使用省略號,空括號不符合語言規範,編譯時會產生錯誤。
  • ③ catch(*){ }:catch(*){ } 為無效語法,星號在 C++ 中代表指標,但此處並非合法的例外型別宣告方式,編譯器無法識別此寫法。
  • ④ catch(exception){ }:catch(exception){ } 僅能捕捉繼承自 std::exception 的例外物件,對於基本型別(如 int、char*)或未繼承 std::exception 的自訂例外無法處理,因此無法捕捉「任何型態」之例外。
Learning Tip

"本題核心考點為 C++ 例外處理機制中萬用 catch 的正確語法。常考陷阱在於混淆 catch(...) 與 catch(exception) 的差異:前者可攔截所有型別,後者僅限標準例外階層。實務上建議將 catch(...) 置於 catch 鏈的最末端,避免遮蔽特定例外的處理邏輯,並注意使用 catch(...) 後無法取得例外物件的詳細資訊。"

學員答題分佈

①catch(){ }0%
②catch(...){ }0%
③catch(*){ }0%
④catch(exception){ }0%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目