2

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

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

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

我想在整个项目中使用这两种异常。数字 2 很清楚,但我该如何做异常 1?最好不必为每个 try 块设置两个 catch 块,因为第一种类型是全局的并且应该始终相同:记录消息、显示错误、退出。最后,在 codeigniter 中,扩展 Exception 类的正确位置在哪里?

谢谢。

4

1 回答 1

0

致命异常

上面 Sunil 发布的链接非常适合全局处理致命异常。您要非常小心地抛出这些异常,并确保对最终用户来说,该站点看起来并不可怕和破碎——幽默地对待用户总是一个好主意

错误异常

我认为您最好不要将数字字段中的文本等错误视为异常,因为它们不会破坏程序指令的正常流程。

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

以下是我在代码点火器中处理场景 2 的方式:

  1. 扩展CI_Log_/application/libraries/MY_Log
  2. MY_Log::$logs如果日志级别允许,添加以将消息存储在数组中
  3. 模板挂钩获取日志MY_Log::get_logs(),然后将它们传递到显示日志级别的相应消息框的视图

我还实现了一个名为error_log. 这适用于我想发送到日志文件而不显示用户的任何内容。

于 2013-07-31T13:40:54.403 回答