异常和错误之间的区别?

时间:2010-05-27 17:50:27

标签: php exception-handling error-handling

错误和异常之间有什么区别?

我已经在网上和几本书中阅读了大量资源,但所提供的解释并不十分彻底。因此,我仍然感到困惑。

谢谢!

修改: 看起来我问了两个可能令人困惑的问题。我想要回答的主要问题是错误和异常之间的差异。所以,我已经编辑了上面更具体的内容。谢谢大家的回答。

3 个答案:

答案 0 :(得分:6)

都不是。例外和错误是指代码出错的时候。用户或多或少地期望输入错误的登录信息。检查用户名/密码是否正确,如果没有,请将用户重定向回登录页面(header('location:login.php?failed=1');),然后如果设置了$_GET['failed'],则显示一条消息。这是最简单的方法。

关于例外/错误......你通常应该坚持例外。你抛出一个异常,然后你抓住它并处理它。我认为当你不知道如何处理catch块中的错误时,trigger_error更多的是将错误传播回客户端。

答案 1 :(得分:5)

没有“应该”或“最好”的方法来进行错误处理。

一般来说,有两种类型的错误

  1. 由程序的其他部分处理的那些。用户永远不会看到或知道这些错误,至少不是直接的。
  2. 导致用户需要被告知的足够失败的那些。
  3. 请注意,这些都与您用于处理错误的特定PHP机制无关。

    如果您使用例外...... 然后,我建议全面使用例外 Register an exception handler并让它完成大部分工作 - including other PHP errors。登录详细信息无效?

    class InvalidLoginException extends Exception
    {
      protected $message = 'Login information is incorrect. Please try again.';
    }
    

    然后你有很多选择来实现。

    try {
      $user->login(); // will throw and InvalidLoginException if invalid
    }
    catch ( InvalidLoginException $e )
    {
      // display an error message
    }
    

    或者,如果您这样选择,请让异常处理程序执行此操作。也许甚至以更灵活的方式

    class ApplicationErrorException extends Exception{}
    class InvalidLoginException extends ApplicationErrorException 
    {
      protected $message = 'Login information is incorrect. Please try again.';
    }
    

    然后,在异常处理程序

    if ( $exception instanceof ApplicationErrorException )
    {
      // dislpay error message
    }
    

    但例外不是唯一的方法,by some not even considered a good way

答案 2 :(得分:0)

首先,异常可以继续执行脚本。此外,trigger_error始终报告调用trigger_error的行和文件。

相关问题