表題の通り、try~catch構文を使ってエラー処理を実装していきたいと思っています。
今まで、エラー処理は、戻り値をチェックして、もしエラーであれば
変数を初期化したり、メッセージを出したりするような処理を施していました。
C++の勉強を進めていく中で、try文がエラー処理に使えるということなので、使ってみたいと思い質問させて貰います。
以下の様にテストでコードを書いてみました
//サーバースタート
case MAKEINTRESOURCE(ID_START):
try{
bRet = odbc.ConnectSQL();
if(bRet == FALSE){
Error err;
throw err;
}
}catch(Error e){
//エラークラス内のSQL関係を初期化するメソッドを呼び出す
e.InitSQL();
return 0;
}
try{
bRet = ws.CreateListen(hWnd);
if(bRet == FALSE){
Error err;
throw err;
}
}catch(Error e){
//エラークラス内のWinsock関係を初期化するメソッドを呼び出す
e.InitWinsock();
return 0;
}
エラークラスからそれぞれの変数を初期化するメソッドを呼び出しています。
そして、一旦returnしてそれ以降の処理を中断しています。
そこで質問なのですが、なんというかこれでは冗長というか、昔の戻り値を逐次チェックするのと変わらない感じがしまして
もっと上手い実装の仕方があるのではないかと思い質問させてもらいます。
一般的にtry文を用いてエラークラスをthrowしエラー処理をする場合、どのように実装するのでしょうか。
サンプルなど有りましたらご提示頂けると幸いです。
よろしくお願いします。