1. 程式人生 > >C++中的try catch語句

C++中的try catch語句

之前一直在使用C#,其中所有的可能會出現的異常操作,都有Exception來進行,本人也從未進行過深究,但是在C++中就沒有這麼簡潔的使用方式了,只好去嘗試使用最原始的解決方案,現整理程式碼,如下
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
////檔案描述:將字串轉換成數字
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
#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溢位等等