PHP中的某些内容与Python中的try ... else
类似吗?
我需要知道try块是否正确执行,因为块正确执行时,将打印一条消息。
答案 0 :(得分:44)
PHP没有try / catch / else。但是,您可以在catch块中设置一个变量,用于确定它是否已运行:
$caught = false;
try {
// something
} catch (Exception $e) {
$caught = true;
}
if (!$caught) {
}
答案 1 :(得分:5)
我认为“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";
}
该代码只会打印 Success
或Error
...从不同时(因为如果print
函数抛出异常,它就赢了'实际打印...但我不认为print
可以抛出异常......)。
答案 2 :(得分:0)
不熟悉python,但听起来像是在尝试使用异常的Catch块之后......
答案 3 :(得分:0)
try {
$clean = false;
...
$clean = true;
} catch (...) { ... }
if (!$clean) {
//...
}
这是你能做的最好的事情。
答案 4 :(得分:-1)
php中有try-catch
。
示例:强>
function inverse($x) {
if (!$x) {
throw new Exception('Division by zero.');
}
else return 1/$x;
}
try {
echo inverse(5) . "\n";
echo inverse(0) . "\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
// Continue execution
echo 'Hello World';
答案 5 :(得分:-3)
您可以使用try { } catch () { }
和throw
。见http://php.net/manual/en/language.exceptions.php
try {
$a = 13/0; // should throw exception
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
或手动:
try {
throw new Exception("I don't want to be tried!");
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}