php try ...还

2022-08-30 19:31:31

PHP中是否有与Python类似的内容?try ... else

我需要知道try块是否正确执行,因为块正确执行时,将打印一条消息。


答案 1

PHP 没有 try/catch/else。但是,您可以在 catch 块中设置一个变量,该变量可用于确定它是否已运行:

$caught = false;

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

if (!$caught) {

}

答案 2

我认为“else”条款有点限制,除非你不关心那里抛出的任何异常(或者你想冒泡这些异常)......根据我对Python的理解,它基本上相当于这个:

try {
    //...Do Some Stuff Here
    try {
        // Else block code here
    } catch (Exception $e) {
        $e->elseBlock = true;
        throw $e;
    }
} catch (Exception $e) {
    if (isset($e->elseBlock) && $e->elseBlock) {
        throw $e;
    }
    // catch block code here
}

所以它有点冗长(因为你需要重新抛出异常),但它也像else子句一样冒泡堆栈...

编辑或者,更干净的版本(仅限5.3)

class ElseException extends Exception();

try {
    //...Do Some Stuff Here
    try {
        // Else block code here
    } catch (Exception $e) {
        throw new ElseException('Else Clasuse Exception', 0, $e);
    }
} catch (ElseException $e) {
    throw $e->getPrevious();
} catch (Exception $e) {
    // catch block code here
}

编辑 2

重新阅读你的问题,我认为你可能用一个“其他”块把事情复杂化了......如果您只是在打印(这不太可能引发异常),那么您实际上并不需要其他块:

try {
    // Do Some stuff
    print "Success";
} catch (Exception $e) {
    //Handle error here
    print "Error";
}

该代码将仅打印...永远不要两者兼而有之(因为如果函数引发异常,它实际上不会被打印出来......但我不认为CAN会抛出异常...)。SuccessErrorprintprint


推荐