所以我寫了一些代碼,我注意到,除了語法,類型和其他編譯時錯誤,C++不會拋出任何其他異常。所以我決定用一個非常重要的程序測試了這一點:C++異常處理
#include<iostream>
int main() {
std::count<<5/0<<std::endl;
return 1
}
當我用G ++編譯它,G ++給了我一個警告,說我被劃分爲0但它仍然編譯的代碼。然後當我運行它時,它會打印一些非常大的任意數字。當我想知道的是,C++如何處理異常?應該是一個非常簡單的例子,當拋出異常並且程序應該終止時。
我是否必須將我的整個程序封裝在一個巨大的try塊中,然後捕獲某些異常?我在Python中知道拋出異常時,程序將立即終止並打印出錯誤。 C++是做什麼的?是否有運行時異常停止執行並終止程序?
謝謝,這是有道理的。另一個問題。如果不是使用std :: cout,我使用std :: cerr,會拋出異常,還是隻打印到錯誤流?如果我創建自己的異常(可以說foo),並且在我的代碼中,我會說throw foo,那麼我的程序是否會立即被殺死,並且foo.what()會被打印出來?還是我必須明確告訴C++這樣做? – user1413793
@ user1413793:如果你寫入'std :: cerr',它只會打印到錯誤流。您可以通過命令行('>'vs'2>')通過重定向將輸出流和錯誤流發送到不同的地方。如果你拋出一個異常,並且你沒有在任何地方捕捉到它,程序將立即終止並打印一條錯誤消息。 (更確切的說,一個名爲'std :: terminate'的函數將被調用,它的默認行爲是終止程序並打印異常的消息。你可以通過調用'std :: set_terminate'來覆蓋行爲。有興趣。) – HighCommander4