私はチームのリーダーに、bool isSuccessful
またはenumをエラーコードとともに返す代わりに、C ++で例外を使用できるように説得しようとしています。しかし、私は彼のこの批判に対抗することはできません。
このライブラリを検討してください。
class OpenFileException() : public std::runtime_error {
}
void B();
void C();
/** Does blah and blah. */
void B() {
// The developer of B() either forgot to handle C()'s exception or
// chooses not to handle it and let it go up the stack.
C();
};
/** Does blah blah.
*
* @raise OpenFileException When we failed to open the file. */
void C() {
throw new OpenFileException();
};
開発者が
B()
関数を呼び出すことを検討してください。彼はそのドキュメントをチェックし、例外を返さないことを確認したため、何もキャッチしようとしません。このコードは、本番環境でプログラムをクラッシュさせる可能性があります。開発者が
C()
関数を呼び出すことを検討してください。彼はドキュメントをチェックしないので、例外をキャッチしません。この呼び出しは安全ではなく、本番環境でプログラムをクラッシュさせる可能性があります。
しかし、この方法でエラーをチェックする場合:
void old_C(myenum &return_code);
その関数を使用している開発者は、その引数を提供しない場合、コンパイラーによって警告され、「あ、これは確認する必要があるエラーコードを返します」と言うでしょう。
ある種の契約があるように、例外を安全に使用するにはどうすればよいですか?
Either
/ Result