Php 抛出新异常不';不要停止代码

Php 抛出新异常不';不要停止代码,php,Php,我想停止代码执行(所有应用程序代码)。实际上,我管理这段代码: try { $connection = mysqli_connect( $this->_host, $this->_username, $this->_dbPass, $this->_dbName ); if(mysqli_connect_errno()) {

我想停止代码执行(所有应用程序代码)。实际上,我管理这段代码:

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
     }
试试看
{
$connection=mysqli\u connect($this->\u主机,
$this->\u用户名,
$this->\u dbPass,
$this->\u dbName);
if(mysqli\u connect\u errno())
{
抛出新异常(“连接中的问题”);
}
}
捕获(例外$ex)
{
标头($\u服务器['SERVER\u协议'.'500内部服务器错误',true,500);
echo json_encode(数组(“success”=>false,“message”=>$ex->getMessage());

return;//在评论中已经进行了相当多的讨论,但是为了回答当前的问题,return确实会在全局范围内停止脚本的执行

例如:

<?php

try {
    throw new Exception('Hello');
}
catch (Exception $e) {
    return;
}
echo "hello world"; // Not reached

?>

如果异常未捕获,它将停止执行。否则,如果捕获到异常,将应用相同的规则。在全局范围内,return将退出应用程序,在函数或方法内,return将仅退出函数


exit()
die()
都将退出应用程序,无论它们在哪个范围内被调用。

在注释中进行了相当多的讨论,但为了回答手头的问题,返回确实会停止全局范围内脚本的执行

例如:

<?php

try {
    throw new Exception('Hello');
}
catch (Exception $e) {
    return;
}
echo "hello world"; // Not reached

?>

如果异常未捕获,它将停止执行。否则,如果捕获到异常,将应用相同的规则。在全局范围内,return将退出应用程序,在函数或方法内,return将仅退出函数


exit()
die()
都将退出应用程序,无论它们在什么范围内被调用。

或die();您只是在设置头,但必须指定您的代码应该停止。在这里想一想:
exit(json_encode(数组(“success”=>false,“message”=>$ex->getMessage());)
@kau lin哈哈,我不是英国人,所以很难理解一些幽默:P@SevengamesXoom:此外,您在此处使用的异常完全不正确。如果要在发生SQL连接错误时执行
catch
块中的逻辑,只需将该逻辑放入
If
块中即可在这里根本不需要异常。作为一般规则,永远不要在逻辑流中使用异常。PHP有很多常用函数的别名,主要是为了帮助来自其他语言的人。或者die();您只是设置头,但必须指定代码应该停止。在这里想一想:
exit(json_encode(array)(“success”)=>false,“message”=>$ex->getMessage());)
@kau lin哈哈,我不是英国人,所以很难理解一些幽默:P@SevengamesXoom:此外,您在此处使用的异常完全不正确。如果要在发生SQL连接错误时执行
catch
块中的逻辑,只需将该逻辑放入
If
块中即可在这里根本不需要异常。一般来说,永远不要在逻辑流中使用异常。PHP有很多常用函数的别名,主要是为了帮助来自其他语言的人。我删除了我自己的答案,因为这个更好。我删除了我自己的答案,因为这个更好。