Php 如何区分CodeIgniter中的错误异常和致命异常?

Php 如何区分CodeIgniter中的错误异常和致命异常?,php,codeigniter,exception,exception-handling,Php,Codeigniter,Exception,Exception Handling,我想在我的项目中使用两种不同类型的异常: 致命的例外。如果出现意外错误,比如mysql查询失败,我想抛出这种异常,而不必捕获它。这个异常意味着我需要采取一些措施,比如记录一条消息,然后使用CodeIgniter的show_error()函数显示一个错误。脚本应退出而不继续 错误异常。如果用户执行了不允许的操作,例如在数字字段中输入字母或访问他没有权限的页面,则应引发并捕获此异常 我希望在整个项目中使用这两种异常。第二点已经很清楚了,但我该如何处理异常1呢?最好每个try块不必有两个catch块,

我想在我的项目中使用两种不同类型的异常:

  • 致命的例外。如果出现意外错误,比如mysql查询失败,我想抛出这种异常,而不必捕获它。这个异常意味着我需要采取一些措施,比如记录一条消息,然后使用CodeIgniter的show_error()函数显示一个错误。脚本应退出而不继续

  • 错误异常。如果用户执行了不允许的操作,例如在数字字段中输入字母或访问他没有权限的页面,则应引发并捕获此异常

  • 我希望在整个项目中使用这两种异常。第二点已经很清楚了,但我该如何处理异常1呢?最好每个try块不必有两个catch块,因为第一种类型是全局的,并且应该始终相同:log message、show error、exit。最后,在codeigniter中,哪里是扩展Exception类的正确位置


    谢谢。

    致命异常

    非常适合全局处理致命异常。您希望在抛出这些异常时非常小心,并确保对最终用户来说,该站点看起来不可怕,也不破碎

    错误异常

    我认为你最好不要把错误当作数字字段中的文本作为例外,因为它们不会破坏程序指令的正常流程。

    如果用户在数字字段中输入字母并提交表单,则应用程序应预期用户可能会提供垃圾数据,然后重复输入过程,这是正常流程

    下面是我如何在CodeIgniter中处理场景2:

  • 使用
    /application/libraries/MY\u Log
  • 添加
    MY_Log::$logs
    以在日志级别允许的情况下在数组中存储消息
  • 模板钩子获取日志
    MY_Log::get_logs()
    ,然后将它们传递到显示相应日志级别的视图
  • 我还实现了一个名为
    error\u log
    的自定义日志级别。这是我想在不显示用户的情况下发送到日志文件的任何内容。

    这可能会有所帮助