我想停止代码执行(所有应用程序代码)。实际上我管理这段代码:
try
{
$connection = mysqli_connect( $this->_host,
$this->_username,
$this->_dbPass,
$this->_dbName );
if(mysqli_connect_errno())
{
throw new Exception("problem in connection.");
}
}
catch(Exception $ex)
{
header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
echo json_encode(array("success" => false, "message" => $ex->getMessage()));
return; //<- application don't end
//exit(); //<- application end
}
现在,如果我在上面的代码块之后调用另一个方法,用return
语句打印“hello world”,我得到回声,但如果我使用exit()
,我看不到任何回声。所以我的问题是:抛出一个新的异常不要停止应用程序实例?我必须使用exit()在异常后停止它而不是返回吗?
答案 0 :(得分:3)
评论中有相当多的讨论,但为了回答手头的问题,返回会停止在全局范围内执行脚本。
http://sandbox.onlinephpfunctions.com/code/59a49286b1cbb62e92fd95134593c2da5ef94468
示例:
<?php
try {
throw new Exception('Hello');
}
catch (Exception $e) {
return;
}
echo "hello world"; // Not reached
?>
如果未被捕获,异常将停止执行。否则,如果捕获到异常,则适用相同的规则。在全局范围内,return将退出应用程序,在函数或方法内,返回只会退出函数。
exit()
或die()
将退出应用程序,无论它们被调用的范围如何。