c++異常處理格式

飛翔的黃瓜發表於2017-07-24

今天看了下c++異常處理格式,現用判斷char字元是否是數字來使用異常處理,上程式碼

class NumberParseException {};//自定義一個異常類,用來catch
bool isNumber(char * str) {
     using namespace std;
     if (str == NULL)
        return false;
     int len = strlen(str);
     if (len == 0)
        return false;
     bool isaNumber = false;
     char ch;
     for (int i = 0; i < len; i++) {
         if (i == 0 && (str[i] == '-' || str[i] == '+'))
            continue;
         if (isdigit(str[i])) {
            isaNumber = true;
         } else {
           isaNumber = false;
           break;
         }
     }
     return isaNumber;
}
int parseNumber(char * str) throw(NumberParseException) { //這樣宣告在使用parseNumber()函式時不滿足條件自動throw();
    if (!isNumber(str))
       throw NumberParseException();
    return atoi(str);
}
int main()
{
        char *str1 = "1", *str2 = NULL;
    try {
        int num1 = parseNumber(str1);
        int num2 = parseNumber(str2);
        printf("sum is %d\n", num1 + num2);
    } catch (NumberParseException) {
        printf("輸入不是整數\n");
    }
}