PHP Try Catch in Exception Handling
我有一个数据库类dbconnect.php和processform.php。在dbconnect.php内部有一个连接到数据库的方法。
如果有错误,如何抛出异常?在processform.php中,我应该把try-catch块放在哪里?人们说我不应该在课堂上直接回送错误。下面是一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?php // dbconnect.php class DbConnect { public function open_connection() { /* Should I do it like this? */ $this->conn = PDO($dsn, $this->username, $this->password); if (!$this->conn) { throw new Exception('Error connecting to the database.'); } /* Or like this */ try { $this->conn = PDO($dsn, $this->username, $this->password); } catch (PDOException $e) { echo 'Error: ', $e->getMessage(), ''; } } ?> // processform.php <?php require_once 'dbconnect.php'; $pdo = new DbConnect($host, $username, $password); try { $pdo->open_connection(); } catch (PDOException $e) { echo 'Error connecting to the database.'); } ?> |
我真的想学习在代码中实现try-catch的正确方法。
您不必手动引发异常,尤其是在成功连接时:-)
相反,您需要告诉PDO,当出现问题时它需要抛出异常,并且您可以在打开数据库连接时这样做:
1 2 | $options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); $this->conn = new PDO($dsn, $this->username, $this->password, $options); |
现在,您可以将所有内容放在
当您决定为访问者微调错误处理时,可以使用
在我的实践中,我更喜欢在底部捕获异常。我是说,在你的数据库连接中。
您可以将错误消息输出到错误日志。并将错误代码返回到前端。所以前端知道如何友好地告诉用户发生的错误。
此外,您可以使用全局错误处理程序(如