📅  最后修改于: 2020-10-20 05:20:44             🧑  作者: Mango
执行和例外总是并存的。如果打开的文件不存在,则需要正确处理此情况,或者您的程序被认为质量不合格。
如果发生异常,程序将停止。异常用于处理各种类型的错误,这些错误可能在程序执行期间发生,并采取适当的措施而不是完全停止程序。
Ruby on Rails中的异常处理与Ruby中的异常处理类似。这意味着,我们将可能引发异常的代码封装在begin / end块中,并使用救援子句告诉Ruby我们要处理的异常类型。
begin
# -
rescue OneTypeOfException
# -
rescue AnotherTypeOfException
# -
else
# Other exceptions
ensure
# Always will be executed
end
从开始到营救的一切都受到保护。如果在执行此代码块期间发生异常,则将控制权传递给rescue和end之间的块。
对于begin块中的每个救援子句,Ruby依次将引发的Exception与每个参数进行比较。如果挽救子句中命名的异常与当前抛出的异常的类型相同,或者是该异常的超类,则匹配将成功。
引发异常时,您有三个选择-
记录到内部日志文件(logger.error)
向用户显示适当的消息
重新显示原始页面以继续
向应用程序报告错误是通过称为flash的结构完成的。闪存是一个哈希存储桶,用于存储您的消息,直到下一个请求被自动删除为止。您可以使用@flash变量访问它。下面给出的是使用记录器模块将错误消息记录在内部文件中的最简单形式。
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的所有消息,您可以添加以下内容-