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

时间:2013-07-30 17:02:12

标签: php codeigniter exception exception-handling

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

  1. 致命异常。如果出现意外错误,就像mysql查询失败一样,我想抛出这种异常,而不必抓住它。此异常意味着我需要采取一些操作,例如记录消息,然后使用CodeIgniter的show_error()函数显示错误。脚本应该在不继续的情况下退出。

  2. 错误异常。如果用户做了一些不允许的事情,例如将字母输入数字字段或访问他没有权限的页面,则应该抛出并捕获此异常。

  3. 我想在整个项目中使用这两种异常。 2号很清楚,但我怎么去做异常1?没有必要为每个try块都有两个catch块会很棒,因为第一种类型是全局的并且应该始终相同:log message,show error,exit。最后,在codeigniter中,扩展Exception类的正确位置在哪里?

    感谢。

1 个答案:

答案 0 :(得分:0)

致命异常

The link posted by Sunil above非常适合全球处理致命异常。您希望在抛出这些异常时非常小心,并确保对最终用户而言,该网站看起来并不可怕并且已经破碎 - humoring the user is always a good idea

错误例外

我认为你最好 将数字字段中的文字等错误视为异常,因为 不会破坏正常流程该计划的说明。

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

以下是我在代码点火器中处理方案2的方法:

  1. 使用CI_Log
  2. 扩展/application/libraries/MY_Log
  3. 如果日志级别允许,则添加MY_Log::$logs以在数组中存储消息
  4. 模板挂钩获取日志MY_Log::get_logs(),然后将其传递给显示日志级别的相应message boxes的视图
  5. 我还实现了一个名为error_log的自定义日志级别。这适用于我想在不显示用户的情况下发送到日志文件的任何内容。