いくつかのファイルを読み込む関数を作成しました。
それぞれにエラー処理とreturnを書くのは煩雑かなと感じたため、ファイル名のみをstd::runtime_errorで投げ、関数内でcatchし、エラー処理、returnする処理を書きました。
この方法はまずいでしょうか?また、より上手に処理する方法があれば教えていただきたいです。
> この方法はまずいでしょうか?
何か懸念事項があるのであれば,具体的に示していただきたく.
例外のメッセージに文章となっていない単語を入れているためです。
関数内でcatchしているなら,その例外が外に漏れだすこともないのでしょうし,
例外のwhat()をエラー処理に特段使わないならば,結局だれもwhat()を使わないわけですから,問題は無いように思いますが.
戻り値として例外を投げる……っていう意味でなら『ダメ』です。
(趣味で自分だけが使うならその人の勝手ですが、『ダメな設計』ですね)
ただし、例外的例外でなら問題ありません。
まあ、『仕様に因る』としか言えませんね。
意図しないruntime_errが発生した場合変なメッセージを作ってしまいそうだな…と考えていました。ありがとうございます。
> 意図しないruntime_errが発生した場合変なメッセージを作ってしまいそう
ああ,そういう…
であれば,自身が投げる例外については runtime_err ではない型にすれば分離できるのではないでしょうか.
> BeatStarさん
だめな設計なのですね。
例外的例外とはどういったものを指していますか?
> fanaさん
その方向で考えてみます。ありがとうございます。
単純に、文字通り、『例外的なもの』です。
『ファイルが存在しないため、読み込めない』、『メモリが足りない』、
『Javaでいうヌルポ』……という感じのです。
> BeatStarさん
理解しました。ありがとうございました。
(質問タイトル見たとき,文字列(string型とか)をthrowする話かと思った.)
回答1件
あなたの回答
tips
プレビュー