搜尋此網誌

2011年7月15日 星期五

C++ 例外處理(Exception Handler)

當函式(Function),throw(丟)出例外的時候,要用一個try..catch的block把這個問題處理掉或顯示出來給使用者知道.範例程式如下:紅色字的部分是exception的運用,
#include <iostream>
using namespace std;
void sum(int, int);

int main() {
int a=1;
int b=1;

try {
sum(a, b);
} catch (const char * s) {// start of exception handler
cout << s <<endl;
}

return 0;
}
void sum(int a, int b) {
if (a==b) {

throw "This Combination is unacceptable!!";

}
cout << a+b<<"\n";
}






紅色字的部分是表示當function sum(int,int)在try block拋出string的錯誤訊息時,catch block(區塊)要把此錯誤訊息印出來.


Exception class(例外類別)



前一個範例是拋出字串,這一個範例是拋出例外類別.使用這一個方法的好處是我們可以為exception分類出不同類別,以方便辨識.另外一方面,也提升了重用性(re-usability).


#include <iostream>
using namespace std;

class Exception {
public:
void mesg() {
cout << "Exception Occurred !!"<<endl;
}
};
void sum1(int, int) throw (Exception);

int main() {
int a=1;
int b=1;
try {
sum1(a, b);
} catch (Exception & ex) {// start of exception handler
ex.mesg();
}

return 0;
}

void sum1(int a, int b) throw (Exception) {
if (a==b) {
throw Exception();
}
cout << a+b<<"\n";
}



解說:
第一部分是宣告一個Exception class(例外類別)
第二部分部分只是把拋出字串,改為拋出此例外類別.
第三部分部分是函式的實做.要記得在定義define(定義)以及declaration(宣告)的時候加上throw關鍵字指定要丟出何種類外類別.

沒有留言:

張貼留言