2

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

以下代码尝试使用虚假登录信息连接到数据库,但无法按预期工作。

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

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

该死! 我不要这个!

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

4

3 回答 3

6

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

此函数负责处理脚本中发生的错误,并在每次抛出错误时调用您提供的函数。

一个简单的处理程序是

function($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}

每次在脚本中引发错误时,它都会引发 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!";
}
于 2012-09-15T15:15:01.033 回答
0

在 PHP 手册Exeptions 上

内部 PHP 函数主要使用错误报告,只有现代面向对象的扩展使用异常。但是,错误可以通过 ErrorException 简单地转换为异常

查看ErrorException并设置您的自定义错误句柄,以捕获这些错误。

于 2012-09-15T10:44:09.447 回答
0

该函数没有抛出异常。相反,它会触发警告。如果您不想显示警告,可以使用 error_reporting() 仅显示实际错误。

于 2012-09-15T11:19:20.837 回答