私は設定を読み込むクラスを持っています。問題は、このクラスのエラーをどのように報告するのか分かりません。ムースコンストラクタからエラーを報告するには?
die
を使用すると、構成がパラメトリックでエラーが一般的であるため、十分ではありません。
私はMoose
BUILD
メソッドでread関数を呼び出すという事実によって状況が複雑になります。この使用法は、クラスが使用されているときの可読性を大幅に向上させるため、このようにしておきたいと思います。
私は設定を読み込むクラスを持っています。問題は、このクラスのエラーをどのように報告するのか分かりません。ムースコンストラクタからエラーを報告するには?
die
を使用すると、構成がパラメトリックでエラーが一般的であるため、十分ではありません。
私はMoose
BUILD
メソッドでread関数を呼び出すという事実によって状況が複雑になります。この使用法は、クラスが使用されているときの可読性を大幅に向上させるため、このようにしておきたいと思います。
die
の何が問題になっていますか?必要に応じてキャプチャして処理できる例外がスローされます。実際にはMoose自体が検証エラーで例外をスローします。
私は 'die'を使って' eval'でそれを捕らえるべきですか? –
@Let_Me_Be - あなたは 'eval'でキャッチすることができますが、あなたを噛むかもしれないいくつかのコーナーケースがあります。私はそれらを避けるために[Try :: Tiny](http://search.cpan.org/perldoc?Try::Tiny)を使っています。詳細については、docs(BACKGROUND)を参照してください。 – bvr
croak()
機能については、Carpを参照してください。そのドキュメントから:)
彼らはダイ( のように振る舞うので、鯉のルーチンが独自のモジュールに便利です)または(警告、しかし、あなたのモジュールのユーザーに に有用である可能性が高いとメッセージ。 cluck、confess、longmessの場合は、コンテキストはcall-stackのすべての呼び出しの要約です。 短いメッセージの場合、carpまたはcroakを使用して、モジュールがどこから呼び出されたかをエラー として報告することができます。
Try::Tinyと一緒に使用すると、古い古いダイとevalを一致させるよりも、強力で柔軟性があり、説明的な解決策が得られます。たとえば、$ @が悪い情報を提供するようなエッジケースについては心配する必要はありません。そしてあなたの例外は、より正確に説明できるだけでなく、より詳細になります。 Carpでは、クロークが告白のように動作するようにすることもでき、詳細なスタックトレースを提供することで、問題の発生元を正確に把握しやすくなります。
これに便利な答えを得るには、 "エラー"を定義する必要があると思います。建設中のエラーは工事を妨げるので、 'die'が適切です。この質問で「エラー」とは何を意味しますか? – darch