- 学习 Ruby on Rails
- Rails 2.1 首页
- Rails 2.1 简介
- Rails 2.1 安装
- Rails 2.1 框架
- Rails 2.1 目录结构
- Rails 2.1 示例
- Rails 2.1 数据库设置
- Rails 2.1 Active Records
- Rails 2.1 数据迁移
- Rails 2.1 控制器
- Rails 2.1 视图
- Rails 2.1 布局
- Rails 2.1 脚手架
- Rails 2.1 和 AJAX
- Rails 2.1 上传文件
- Rails 2.1 发送邮件
- 高级 Ruby on Rails 2.1
- Rails 2.1 RMagick 指南
- Rails 2.1 基本 HTTP 认证
- Rails 2.1 错误处理
- Rails 2.1 路由系统
- Rails 2.1 单元测试
- 高级 Ruby on Rails 2.1
- Rails 2.1 提示与技巧
- 快速参考指南
- 快速参考指南
- Ruby on Rails 2.1 有用资源
- Ruby on Rails 2.1 - 资源
- Ruby on Rails 2.1 - 讨论
Ruby on Rails 2.1 - 异常处理
执行和异常总是同时发生。如果你打开一个不存在的文件,那么你需要正确处理这种情况,否则你的程序会被认为是质量低下的。
如果发生异常,程序将停止运行。异常用于处理程序执行期间可能发生的各种类型的错误,并采取适当的措施,而不是完全停止程序。
Ruby on Rails 中的异常处理类似于 Ruby 中的异常处理。这意味着我们将可能引发异常的代码放在begin/end块中,并使用rescue子句来告诉 Ruby 我们想要处理的异常类型。
语法
begin # - rescue OneTypeOfException # - rescue AnotherTypeOfException # - else # Other exceptions ensure # Always will be executed end
从begin到rescue的所有内容都受到保护。如果在此代码块执行期间发生异常,则控制权将传递到rescue和end之间的块。
对于begin块中的每个rescue子句,Ruby 依次将引发的异常与每个参数进行比较。如果rescue子句中命名的异常与当前抛出的异常类型相同,或者其超类是当前抛出的异常类型,则匹配将成功。
在哪里记录错误?
抛出异常时,您有三个选项:
记录到内部日志文件 (logger.error)
向用户显示适当的消息
重新显示原始页面以继续
错误报告到应用程序是通过一个称为flash的结构进行的。flash是一个哈希桶,用于保存您的消息,直到下一个请求之前才会自动删除。您可以使用@flash变量访问它。以下是使用logger模块在内部文件中记录错误消息的最简单形式。
begin ......... rescue Exception => exc logger.error("Message for the log file #{exc.message}") flash[:notice] = "Store error message" redirect_to(:action => 'index') end
要在您的视图或布局(.html.erb)中显示来自@flash的所有消息,您可以添加以下内容:
<% @flash[:notice] -%> <div id="notice"><%= @flash[:notice] %></div> <% end -%>
广告