try,catch構文でエラー処理を実装しようかと思っておりまして
エラーが発生したら各クラスのメソッドからエラークラスをthrowし
catchで捕まえてアプリケーションを終了する等の処理を行いたいと思っています。
知りたいのは、try文を用いてエラー処理を行う際の一般的な記述方法です。
試しにテストコードを書いてみましたが、メイン関数で宣言したエラークラスを
それぞれの関数に渡さないといけない為、凄く冗長な感じがします。
皆さんどの様にエラー処理の実装をしているのでしょうか。
ご教授お願いいたします。
#include "stdafx.h"
//エラークラスの定義
class error{
public:
int EndApplication();
};
int error::EndApplication(){
printf("errorクラスからアプリケーションを終了します\n");
return 0;
}
//仮のクラス
//ここからエラーをthrowする
class hoge{
public:
int temp;
//エラークラスを呼び出す関数
int get();
int CallError(error *);
};
//数字を入力する関数
int hoge::get(){
printf("数字を入力して下さい\n");
scanf("%d",&temp);
return 0;
}
//エラーを呼び出す関数
//エラークラスへのポインタを引数として受け取る
int hoge::CallError(error *er){
//入力された数字が0以下ならばエラーをthrowする
if(temp < 0){
//ポインタで受け取っているエラークラスをthrowする
throw er;
}else{
printf("普通に終了します\n");
}
return 0;
}
//メイン関数
int _tmain(int argc, _TCHAR* argv[])
{
//クラスをインスタンス化
hoge *hg = new hoge();
//エラークラスをインスタンス化
error *err = new error();;
try{
hg->get();
hg->CallError(err);
}
catch(error *er){
er->EndApplication();
}
delete[] err;
delete[] hg;
return 0;
}