【问题标题】:What is the point of using custom exception class in php?在 php 中使用自定义异常类有什么意义?
【发布时间】:2011-04-13 16:48:31
【问题描述】:

在某些库中,为每个错误情况创建自定义异常类是常见的做法,例如:

class FileNotFound_Exception extends Exception {}

您可以处理某些类型的异常,但是您无法阅读所有库的所有源代码来记住每个异常类,并且无法充分利用使用自定义异常。大多数时候我只是用基本的异常类来捕捉它们:

catch (Exception $e)
{
    // log and display friendly error
}

是否有其他方法可以受益于自定义异常类,而无需编写长长的 catch 块列表? 我喜欢例外,但不知道如何正确使用它们。谢谢。

【问题讨论】:

标签: php exception-handling try-catch


【解决方案1】:

拥有自己的 Exception 类的好处是,作为库的作者,您可以捕获并处理它。

try {
   if(somethingBadHappens) {
     throw MyCustomException('msg',0)
   }
} catch (MyCustomException $e) {
  if(IcanHandleIt) {
    handleMyCustomException($e);
  } else {
    //InvalidArgumentException is used here as an example of 'common' exception
    throw new InvalidArgumentException('I couldnt handle this!',1,$e);
  }
}

【讨论】:

    【解决方案2】:

    好吧,自定义异常类可让您正确路由错误以便更好地处理。

    如果你有课

    class Known_Exception extends Exception {}
    

    还有一个像这样的 try catch 块:

    try {
        // something known to break
    } catch (Known_Exception $e) {
        // handle known exception
    } catch (Exception $e) {
        // Handle unknown exception
    }
    

    那么你知道 Exception $e 是一个未知的错误情况并且可以相应地处理它,这对我来说非常有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      • 2019-11-20
      相关资源
      最近更新 更多