私は非常に簡単な質問に苦労しています:
現在、サーバーアプリケーションで作業しています。例外の階層を作成する必要があります(一部の例外は既に存在しますが、一般的なフレームワークが必要です)。どうすればこれを開始できますか?
私はこの戦略に従うことを考えています:
1)何が問題なのでしょうか?
- 何かが求められますが、これは許可されていません。
- 何らかの質問があり、許可されていますが、パラメーターが間違っているため機能しません。
- 何らかの質問があり、許可されていますが、内部エラーのために機能しません。
2)リクエストを開始しているのは誰ですか?
- クライアントアプリケーション
- 別のサーバーアプリケーション
3)メッセージ処理:サーバーアプリケーションを扱っているので、メッセージの送受信がすべてです。それでは、メッセージの送信がうまくいかない場合はどうでしょうか?
そのため、次の例外タイプが発生する場合があります。
- ServerNotAllowedException
- ClientNotAllowedException
- ServerParameterException
- ClientParameterException
- InternalException(サーバーがリクエストの送信元を知らない場合)
- ServerInternalException
- ClientInternalException
- MessageHandlingException
これは例外階層を定義するための非常に一般的なアプローチですが、いくつかの明らかなケースが欠けているのではないかと心配しています。私がカバーしていない分野についてのアイデアがありますか、この方法の欠点を知っていますか、この種の質問に対するより一般的なアプローチがありますか(後者の場合、どこで見つけることができますか)?
前もって感謝します
catch
、私が使用するほとんどのブロックでは、例外に含まれるエラーメッセージほど多くの例外を使用しません。ファイルの読み取り中にメモリの割り当てに失敗したため、ファイルの読み取りに失敗したことに関連する例外に対してできることは何もありません。そのためstd::exception
、含まれているエラーメッセージをキャッチして報告する傾向があります。それを"Failed to open file: %s", ex.what()
印刷する前にスタックバッファに追加します。