エラー処理に型アサーションを使用するのは間違っていますか?

WBOY
リリース: 2024-02-10 10:24:09
転載
890 人が閲覧しました

エラー処理に型アサーションを使用するのは間違っていますか?

エラー処理に型アサーションを使用するのは一般的な方法ですが、それがエラーであるかどうかは特定の状況によって異なります。型アサーションを使用すると、渡されたパラメーターの型が期待を満たしていることを検証できるため、コード内のエラーを早期に検出できます。ただし、エラー処理が型アサーションに依存し、他の考えられる例外を無視する場合、問題が発生する可能性があります。したがって、エラー処理に型アサーションを使用する場合は、コードのロジックと信頼性を包括的に考慮し、コードの安定性と保守性を確保するためにさまざまな例外が適切に処理されるようにする必要があります。

質問内容

なぜ 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.iserrors.as を使用して、手元のエラーに探しているエラーが含まれているかどうかをテストする必要があります。

以上がエラー処理に型アサーションを使用するのは間違っていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!