teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

補足

2021/07/20 06:22

投稿

nobonobo
nobonobo

スコア3367

answer CHANGED
@@ -3,8 +3,9 @@
3
3
  クライアントからRPCサーバーへの疎通に失敗やリモートプロシージャ関数をreturnしたあと、通信路の問題でエラーが発生した場合もクライアントがエラーを受け取ると思いますが、これはサーバーサイドでは検知できないのでサーバーが対処する必要はありません(gRPCフレームワークがエラーログを出力するくらい)
4
4
 
5
5
  ただし、私の考え方では明らかなサーバー実装や構成の不備を検出した場合はそのまま動作を継続する意義は少ないのでpanicやlog.Fatal系でサーバーを落とすのはアリだと考えています。(書き込み権限が必要なフォルダに書き込み権限がないなど、サーバーの動作要件が満たされていない場合)
6
+ サーバーを落とした場合、クライアントは接続が切断されたという類のエラーになると思います。
6
7
 
7
8
  サンプルコードなども同じ理由で正常動作フローを読み手に伝えるものなのでサンプルではエラーの発生はサンプルコードの趣旨から外れるためコードは中断する様に書くことが多いと思います。
8
9
  (エラーをどのようにハンドリングすべきかはアプリケーション実装をする人が考える必要があるということ)
9
10
 
10
- 問題発生にpanicヒントを出してプログラムを止めるのは問題の場所と原因を的確に迅速にプログラムの書き手に理解させる最良の方法です。ヒントだけだしてプログラムの動作が継続しているとヒントを見逃してしまったりでデバッグ作業が遅延したりします。
11
+ サーバー環境や実装の不備により問題発生した場合にpanicヒントを出してプログラムを止めるのは問題の場所と原因を的確に迅速にプログラムの書き手に理解させる最良の方法です。ヒントだけだしてプログラムの動作が継続しているとヒントを見逃してしまったりでデバッグ作業が遅延したりします。