java 调用一个抛出异常的函数,Java VS C++(14) 调用可能抛出异常的函数
調用可能拋出異常的函數
(1)java看是否是受檢異常,如果是必須try catch, 如果是非受檢異常,則不用 try catch
void test()throws MyException;
(2)c++不必try catch,不會編譯錯誤:
void fun (); // 能拋出任何類型的異常
void fun () throw(except1,except2,except3)
// 后面括號里面是一個異常參數表,本例中只能拋出這3中異常
void fun () throw()?? // 參數表為空,不能拋出異常,如果拋出異常,編譯沒有問題,但是運行時try...catch(...)也捕獲不了,直接abort
問題b:假設fun()中拋出了一個不在“異常參數表”中的異常,會怎么樣?
答:調用set_terminate()中設定的終止函數。然而,這只是表面現象,實際上是調用默認的unexpected()函數,然而這個默認的unexpected()調用了set_terminate()中設定的終止函數??梢杂胹et_unexpected()來設置unexpected,就像set_terminate()一樣的用法,但是在設定了新的“unexpected()”之后,就不會再調用set_terminater中設定的終止函數了。
#include
class Exception{};
using namespace std;
void test(){
cout<
throw 1; ?//如果是throw:則捕獲不了,如果是1可以捕獲
}
int main(){
try{
try{
test();
}catch(...){
cout<
throw;
}
}catch(...){
cout<
}
}
重新拋出是采用不帶運算對象的throw表示,但是如果重新拋出,又沒有異??梢灾匦聮伋?#xff0c;就會調用terminate();
總結
以上是生活随笔為你收集整理的java 调用一个抛出异常的函数,Java VS C++(14) 调用可能抛出异常的函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 芯片突围记
- 下一篇: Visual C++中的异常处理浅析(上