14

この質問は、例外がスローされない場合にのみ、try ブロックの外側でコードを実行する最良の方法に関するものです。

try {
    //experiment
    //can't put code after experiment because I don't want a possible exception from this code to be caught by the following catch. It needs to bubble.
} catch(Exception $explosion) {
    //contain the blast
} finally {
    //cleanup
    //this is not the answer since it executes even if an exception occured
    //finally will be available in php 5.5
} else {
    //code to be executed only if no exception was thrown
    //but no try ... else block exists in php
}

これは、質問php try .. elseに応じて@webbiedaveによって提案された方法です。余分な変数を使用しているため、満足のいくものではありません。$caught

$caught = false;

try {
    // something
} catch (Exception $e) {
    $caught = true;
}

if (!$caught) {

}

それでは、追加の変数を必要とせずにこれを達成するためのより良い (または最良の) 方法は何でしょうか?

4

2 に答える 2

7

1 つの可能性は、メソッドに try ブロックを配置し、例外が発生した場合に false を返すことです。

function myFunction() {
    try {
        // Code  that throws an exception
    } catch(Exception $e) {
        return false;
    }
    return true;
}
于 2013-06-12T19:23:43.750 に答える