タグ

エラーとebookに関するbaboocon19820419のブックマーク (4)

  • 標準出力ではなく標準エラーにエラーメッセージを書き込む - The Rust Programming Language 日本語版

    標準出力ではなく標準エラーにエラーメッセージを書き込む 現時点では、すべての出力をprintln!関数を使用して端末に書き込んでいます。多くの端末は、 2種類の出力を提供します: 普通の情報用の標準出力(stdout)とエラーメッセージ用の標準エラー出力(stderr)です。 この差異のおかげで、ユーザは、エラーメッセージを画面に表示しつつ、 プログラムの成功した出力をファイルにリダイレクトすることを選択できます。 println!関数は、標準出力に出力する能力しかないので、標準エラーに出力するには他のものを使用しなければなりません。 エラーが書き込まれる場所を確認する まず、minigrepに出力される中身が、代わりに標準エラーに書き込みたいいかなるエラーメッセージも含め、 どのように標準出力に書き込まれているかを観察しましょう。意図的にエラーを起こしつつ、 ファイルに標準出力ストリーム

  • panic!すべきかするまいか - The Rust Programming Language 日本語版

    panic!すべきかするまいか では、panic!すべき時とResultを返すべき時はどう決定すればいいのでしょうか?コードがパニックしたら、 回復する手段はありません。回復する可能性のある手段の有る無しに関わらず、どんなエラー場面でもpanic!を呼ぶことはできますが、 そうすると、呼び出す側のコードの立場に立ってこの場面は回復不能だという決定を下すことになります。 Result値を返す決定をすると、決断を下すのではなく、呼び出し側に選択肢を与えることになります。 呼び出し側は、場面に合わせて回復を試みることを決定したり、この場合のErr値は回復不能と断定して、 panic!を呼び出し、回復可能だったエラーを回復不能に変換することもできます。故に、Resultを返却することは、 失敗する可能性のある関数を定義する際には、いい第一選択肢になります。 稀な場面では、Resultを返すよりもパ

  • Resultで回復可能なエラー - The Rust Programming Language 日本語版

    Resultで回復可能なエラー 多くのエラーは、プログラムを完全にストップさせるほど深刻ではありません。時々、関数が失敗した時に、 容易に解釈し、対応できる理由によることがあります。例えば、ファイルを開こうとして、 ファイルが存在しないために処理が失敗したら、プロセスを停止するのではなく、ファイルを作成したいことがあります。 第2章の「Result型で失敗する可能性に対処する」でResult enumが以下のように、 OkとErrの2列挙子からなるよう定義されていることを思い出してください: #![allow(unused)] fn main() { enum Result<T, E> { Ok(T), Err(E), } } TとEは、ジェネリックな型引数です: ジェネリクスについて詳しくは、第10章で議論します。 たった今知っておく必要があることは、Tが成功した時にOk列挙子に含まれて

  • panic!で回復不能なエラー - The Rust Programming Language 日本語版

    panic!で回復不能なエラー 時として、コードで悪いことが起きるものです。そして、それに対してできることは何もありません。 このような場面で、Rustにはpanic!マクロが用意されています。panic!マクロが実行されると、 プログラムは失敗のメッセージを表示し、スタックを巻き戻し掃除して、終了します。これが最もありふれて起こるのは、 何らかのバグが検出された時であり、プログラマには、どうエラーを処理すればいいか明確ではありません。 パニックに対してスタックを巻き戻すか異常終了するか 標準では、パニックが発生すると、プログラムは巻き戻しを始めます。つまり、言語がスタックを遡り、 遭遇した各関数のデータを片付けるということです。しかし、この遡りと片付けはすべきことが多くなります。 対立案は、即座に異常終了し、片付けをせずにプログラムを終了させることです。そうなると、プログラムが使用してい

  • 1