エラー処理に型アサーションを使用するのは一般的な方法ですが、それがエラーであるかどうかは特定の状況によって異なります。型アサーションを使用すると、渡されたパラメーターの型が期待を満たしていることを検証できるため、コード内のエラーを早期に検出できます。ただし、エラー処理が型アサーションに依存し、他の考えられる例外を無視する場合、問題が発生する可能性があります。したがって、エラー処理に型アサーションを使用する場合は、コードのロジックと信頼性を包括的に考慮し、コードの安定性と保守性を確保するためにさまざまな例外が適切に処理されるようにする必要があります。
なぜ golang ではスイッチ型アサーション形式のエラー処理が使われない/推奨されないのか疑問です。どうしたの?それともコミュニティは単にそれを気にしていないのでしょうか?
たとえば、次のコード:
リーリーは次のように記述できます:
if err != nil { if errors.as(err, &queryerr{}) { log.println("query error : ", err) return http.statusinternalservererror } else if errors.as(err, &querydataextractionerr{}) { return http.statusnotfound } else { log.println(err.error()) return http.statusinternalservererror } }
タイプ スイッチは技術的には正しいです。ただし、型の切り替えが正しくないと、ラップされたエラーが誤って解釈される可能性があります。例えば:### リーリー
上記では、err1.(io.eof) は失敗しますが、
errors.is(err1,io.eof) は失敗しません。
errors.is と
errors.as を使用して、手元のエラーに探しているエラーが含まれているかどうかをテストする必要があります。
以上がエラー処理に型アサーションを使用するのは間違っていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。