在PHP中使用odbc_exec时使用try-catch语句的异常行为

Spe*_*osa 1 php odbc try-catch wampserver

前面的问题中,我得到了在odbc_connect调用上使用try-catch语句的建议。好了,说完了,这就是我试图做的。

以下代码尝试使用虚假的登录信息连接到数据库,但无法正常运行。

<?php
  try
  {
    odbc_connect('BogusDatabase','BogusUser','BogusPassword');
  }
  catch (Exception $e)
  {
    echo "Something went wrong!";
  }
?>
Run Code Online (Sandbox Code Playgroud)

我希望输出是一个字符串,指出“出了点问题!”。相反,我得到这个:

该死的! 我不要这个!

我正在使用Wampserver运行我的PHP代码。我不知道这是否是问题的一部分。

art*_*gis 5

正如@Aurimas所说,您必须使用error_handler来做到这一点。 http://php.net/manual/zh/function.set-error-handler.php

此函数将照顾脚本中发生的错误,并在每次引发错误时调用您提供的函数。

一个简单的处理程序是

function($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
Run Code Online (Sandbox Code Playgroud)

每次在脚本中引发错误时,都会引发ErrorException。因此,整个脚本的行为将与您期望的一样:

 set_error_handler(function($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
 });
 try
{
  odbc_connect('BogusDatabase','BogusUser','BogusPassword');
}
catch (Exception $e)
{
  echo "Something went wrong!";
}
Run Code Online (Sandbox Code Playgroud)