回答
重新排除的異常可以有不同的類型。 這將編譯並正確運行在VS2012
// exceptions
#include <iostream>
using namespace std;
int main() {
try{
try
{
throw 20;
}
catch (int e)
{
cout << "An exception occurred. Exception Nr. " << e << '\n';
throw string("abc");
}
}
catch (string ex)
{
cout<<"Rethrow different type (string): "<< ex<<endl;
}
return 0;
}
輸出:
發生異常。例外編號20
重新拋出不同類型(字符串):ABC
這個例子證實了我的信息是錯誤的,我在eclipse cdt上運行它,並且它成功了。謝謝。 –
但是,'throw;'總是會重新拋出現有的異常,導致一些巧妙的技巧。 –
等等,爲什麼'20'不在你的樣本輸出中? –
不一定。只要你抓住它,它取決於你如何處理它。您可以拋出一個相同的異常或一個全新的異常。或者,什麼都不做。
throw;
全部由自己在catch塊重新拋出剛捕捉到的異常。
catch(...)
{
cleanup();
throw;
}
但你也完全:如果您需要(例如)在響應異常進行一些清理操作,但仍然允許它upstack傳播到那裏可以更充分地處理的地方,這是有用自由地做到這一點:
catch(SomeException e)
{
cleanup();
throw SomeOtherException();
}
,事實上它常常方便任何類型的您記錄了你扔來完成這一功能,以翻譯由你叫成成代碼拋出的異常。
感謝您的幫助。 –
- 1. catch塊中的函數拋出異常
- 2. 在PHP Try Catch塊中拋出異常
- 3. 拋出新的異常VS Catch塊
- 4. 異常拋出空的catch塊
- 5. try-catch塊內的異常拋出
- 6. 在catch塊中拋出異常請求另一個try catch塊
- 7. 在catch塊內拋出一個異常
- 8. 在catch塊內拋出異常
- 9. 異常拋出終於和catch塊
- 10. MVC3處理catch塊中的異常並拋出異常
- 11. 異常拋出catch和最後。 CLR行爲與try-catch塊
- 12. 可以拋出異常的java中的方法的try/catch塊
- 13. 從catch塊中拋出嵌套異常......這是明智的嗎?
- 14. 另一個類拋出的catch異常?
- 15. 空的catch但異常仍然拋出
- 16. 停止在嵌套try-catch塊中拋出異常
- 17. 在catch塊中重新拋出異常是否有意義?
- 18. 如何在java中再次拋出異常相同的類型?
- 19. 重新拋出一個有嵌套異常的catch塊的異常嗎?
- 20. 使用Xamarin Insights處理try/catch塊外部拋出的異常
- 21. 拋出異常後不會去正確的catch塊
- 22. 拋出其他和周圍catch塊相同的異常
- 23. 重新拋出從catch塊的異常時
- 24. 在catch塊中拋出NullPointerException
- 25. 上次拋出的異常包含以前拋出的異常?
- 26. 如何在catch塊中拋出異常在使用throw的java中工作,以及如何在finally塊執行後再次拋出控件?
- 27. 爲什麼不進入catch塊而沒有拋出異常
- 28. 拋出自定義的異常收集信息並再次拋出
- 29. 如果在catch塊中拋出異常,是否會執行finally塊?
- 30. 當catch塊和finally塊在Java中拋出異常時會發生什麼?
我當然希望不會;或者我的異常處理代碼的很大一部分是錯誤的! ;) – dlf