2017-03-15 3 views
1

を扱いますコードよりも定型的なエラー処理があります! This websiteを避けてを避けますが、このにおいをきれいにする方法の例は示していません。便利な例は、Go blogからまっすぐに来ています。これは、意味のあるエラーハンドラを使用して同種のHTTPアプリケーションをクリーンアップする方法を示しています。が正しくあなたは、次の規則を探しに行くには一般的にエラー

しかし、これらの呼び出しのそれぞれが同じ "中心的なアイデア"のように同質ではないと考えているので、単一の "エラーハンドラ構造体"は意味がありません。

このタイプのコードにおいを、エラーの点でうまく "メッシュ化"しない関数でクリーンアップする方法はありますか?

+0

になることができます。 'err1'、' err2'、 'err3'を使うと、後で比較するたびに新しいエラー値を初期化する理由があることを意味し、エラー処理が混乱することになります。 – JimB

+1

はい、あなたはGOでこのようなコードを書くと辛いようです。しかし、プログラマが何らかのエラーを無視して大量のコードを書いた後に、デバッグとエラーの検索に多くの時間を費やす代わりに、安定したソフトウェアを構築したい場合。何かが失敗するかもしれない、それは失敗するでしょう。私の提案は、すべてのエラーをチェックしてログに記録することです。後であなたはこれをしてくれたことに感謝します。 –

+0

"しかし、このような呼び出しの数が非常に多いため、これは非常に難しくなります。 3つの異なる "失敗"パスがあり、それらを処理する必要があります。これをやっているのは、「非常に困惑」ではありません。 – Volker

答えて

1

残念ながら、これらのパターンを回避する方法はありません。 はパニック/デファーを一時的な試み/キャッチシステムとして使うことができますが、コミュニティはそれを見下ろしています。

移動中の文は、割り当てと組み合わせることができればそう

err := thing.Do() 
if err != nil { 
    return err 
} 

私はそのサイトが呼び出しにローカルなエラーを保っているになっているものだと思う

if err := thing.Do(); err != nil { 
    return err 
} 
関連する問題