C++中的try catch語句
阿新 • • 發佈:2018-12-30
之前一直在使用C#,其中所有的可能會出現的異常操作,都有Exception來進行,本人也從未進行過深究,但是在C++中就沒有這麼簡潔的使用方式了,只好去嘗試使用最原始的解決方案,現整理程式碼,如下
其實就是一個很簡單的將字串轉換成數字的小程式,但是我們在編寫程式的時候一定要注意程式的魯棒性,也即在危險情況下,系統能否正常執行,也即,需要考慮到系統真正執行時可能遇到的種種問題:諸如非法輸入,或者int溢位等等
/////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////檔案描述:將字串轉換成數字 /////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include<iostream> using namespace std; #define OVERFLOW -1 #define ILLEGAL -2 int StrtoInt( char* Str) { const char* p=Str; int total=0; try { do { total*=10; if(*p-'0'<0||*p-'0'>9) { throw ILLEGAL; } total+=*p-'0'; if(total<0) { throw OVERFLOW; } *p++; }while(*p); } catch(int& value) { if(value==ILLEGAL) { cout<<"抱歉非法輸入\n"; } else if(value==OVERFLOW) { cout<<"抱歉,溢位錯誤\n"; } return -1; } return total; } int main() { char str_input[100]={0}; cout<<"請輸入要轉換的字串\n"; cin>>str_input; cout<<"轉換結果是:"<<StrtoInt(str_input)<<endl; return 0; }
其實就是一個很簡單的將字串轉換成數字的小程式,但是我們在編寫程式的時候一定要注意程式的魯棒性,也即在危險情況下,系統能否正常執行,也即,需要考慮到系統真正執行時可能遇到的種種問題:諸如非法輸入,或者int溢位等等