4

私は例外に慣れていないので、それらをいつ使用するのが適切かを理解しようとしています。次の php コードではecho、単にメッセージをログに記録するように (ユーザーに伝える必要はありません) 変更したいと思います。(たとえば)単に置き換えるかecho、例外を使用する必要があります(とにかくログに記録する予定です)。log->notice(...)

if (file_exists($file)) {
    echo 'File already exists and will be overwritten.';
}

また、例外を使用する必要がある場合、このシナリオで適切に使用するにはどうすればよいですか?

4

3 に答える 3

1

例外は通常、エラーや問題などの予期しない動作を処理するように設計されています。

上記の例の場合、ファイルが存在することを期待でき、すでにファイルが存在する場合は実際に流れるようにプログラムを作成する必要があるため、必要なかったと思います(あなたが行ったように) 。それはすべてあなたが何が起こると期待するかに依存し、そうではありません。

通常の使用例は次のとおりです。

try
{
    some_function();
}
catch (Exception $e)
{
    echo 'Function didn\'t behave as expected, please try again, here is the error: '.$e->getMessage();
}
于 2012-04-04T16:56:27.923 に答える
1

例外はエラーを処理する標準的な方法です..しかし、例外を使用する必要がある場合もあります。

ファイルを検証したいだけの場合..例外の必要はありません..誤った出力でリダイレクトする必要がある場合、連鎖反応がある場合、またはフレームワークなどを開発している場合...例外を使用することをお勧めします

try
{
    if (file_exists($file)) {
           throw new Exception('File already exists and will be overwritten.');
    }
}
catch (Exception $e)
{
   header("Location: error?msg=". base64_encode($e->getMessage()));
}

結論

スクリプトを何に使用するかによって、例外を使用する方がよいかどうかが決まります。

これがお役に立てば幸いです

ありがとう

:)

于 2012-04-04T17:06:20.847 に答える
1

例外は、エラーが発生した場合に実行の流れを中断することを目的としています。ファイルが存在するためにフローを停止したい場合は、次のように実行できます。

try {
    if (file_exists($file)) {
        throw new Exception(sprintf('File already exists and will be overwritten';
    }

    // If above conditional is realized, no code from this point forward will be
    //  executed

} catch (Exception $e) {
    error_log($e->getMessage());
}

あなたの特定の例では、コードをそのままにしておいても問題ないと思います。これは警告にすぎないように見えるため、実行の流れを中断したくないが、警告の後にコードの実行を続行したくないことを意味します。

本当に例外を使用したい場合は、ネストされた例外を実装できますが、複雑になり、やり過ぎになってしまいます。

PHP ドキュメントによる例外の詳細情報。

echo を log->notice(...) に置き換えるだけですか

ユーザーに問題を認識してほしくない限り、そうします。

于 2012-04-04T17:06:52.940 に答える