rails异常(错误)处理

方法1:http://www.uedidea.com/rails%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86.html

 

def add_to_cart
product = Product.find(params[:id])
rescue ActiveRecord::RecordNotFound #拦截Product.find()异常
logger.error("Attempt to access invalid product #{params[:id]}") #日志记录
flash[:notice] = "Invalid product" #notice 存放提示信息
redirect_to :action => "index" #跳转到index
end

begin
   @user.destroy
    flash[:notice] = "User #{@user.name} deleted"
rescue Exception => e #如果上面的代码执行发生异常就捕获
   flash[:notice] = e.message
end

 

begin
  raise ArgumentError, "Bad data"
rescue => err 
  puts err 
ensure
...                       #执行清理工作 
end  
 




方法2:around_filter  

http://hlee.iteye.com/blog/323025

 

    around_filter :rescue_record_not_found     
        
    def rescue_record_not_found     
      begin     
        yield     
      rescue ActiveRecord::RecordNotFound     
        render :file => "#{RAILS_ROOT}/public/404.html"    
      end     
    end    
 



   hlee 在文中还提到可以这样做:

    rescue_from ActiveRecord::RecordNotFound, with => :rescue_record_not_found     
        
    def rescue_record_not_found     
      render :file => "#{RAILS_ROOT}/public/404.html"    
    end    
 

方法3:rescue_action_in_public



参考:http://202.199.224.30/post/article/7

    def rescue_action_in_public(exception)      
        logger.error("rescue_action_in_public executed")      
        case exception      
        when ActiveRecord::RecordNotFound, ::ActionController::RoutingError,        
          ::ActionController::UnknownAction      
          logger.error("404 displayed")      
          render(:file  => "#{RAILS_ROOT}/public/404.html",      
          :status   => "404 Not Found")      
        else      
          logger.error("500 displayed")      
          render(:file  => "#{RAILS_ROOT}/public/500.html",      
          :status   => "500 Error")      
    #      SystemNotifier.deliver_exception_notification(self, request,        
    #                                                    exception)      
        end      
      end    

 



   注意:在不同环境中的配置,生产环境中,默认的配置应该就可以显示效果,但在开发模式下,需要确认/config/environments/development.rb中的



代码

config.action_controller.consider_all_requests_local = false   

 
如果在本机访问必须增加(app/controllers/application.rb):



代码

def local_request? 
  false 
end  
 


错误类型参考:

    DEFAULT_RESCUE_RESPONSE = :internal_server_error  
    DEFAULT_RESCUE_RESPONSES = {  
      'ActionController::RoutingError'             => :not_found,  
      'ActionController::UnknownAction'            => :not_found,  
      'ActiveRecord::RecordNotFound'               => :not_found,  
      'ActiveRecord::StaleObjectError'             => :conflict,  
      'ActiveRecord::RecordInvalid'                => :unprocessable_entity,  
      'ActiveRecord::RecordNotSaved'               => :unprocessable_entity,  
      'ActionController::MethodNotAllowed'         => :method_not_allowed,  
      'ActionController::NotImplemented'           => :not_implemented,  
      'ActionController::InvalidAuthenticityToken' => :unprocessable_entity  
    }  
      
    DEFAULT_RESCUE_TEMPLATE = 'diagnostics'  
    DEFAULT_RESCUE_TEMPLATES = {  
      'ActionView::MissingTemplate'       => 'missing_template',  
      'ActionController::RoutingError'    => 'routing_error',  
      'ActionController::UnknownAction'   => 'unknown_action',  
      'ActionView::TemplateError'         => 'template_error'  
    }  
 




又看了这篇贴子中的讨论:http://www.iteye.com/topic/708334
rails的错误处理还需要再研究。

 

Pyinstaller打包为可执行文件编码错误的问题 Pyinstaller打包为可执行文件编码错误的问题 写好的python程序在vscode上运行没有任何问题,将程序利用pyinstaller打包后,运行程序发生了错误。 错误代码 UnicodeDecodeError: ‘utf-8' codec can't decode byte 0xce in position 20-21:invalid cotinuation byte 网上找到的解决方案是: 1.在命令行中输入 chcp 65001 2.按正常方式进行封装 pyinstaller 阅读详情

相关推荐

2024最新Typora配置指南:从安装到打造学术写作环境(含LaTeX/参考文献解决方案)

本文提供2024年最新Typora配置指南,详细讲解如何从安装开始,结合Pandoc、Zotero和LaTeX,打造高效的学术写作环境。指南涵盖Typora深度定制、学术主题配置、参考文献自动管理以及一键生成出版级PDF的完整解决方案,旨在帮助科研人员和学生实现内容与格式分离,大幅提升论文写作效率。

weixin_29258297的博客 211

Rails 异常处理 && 性能

Rails 异常处理 的多种处理方法 1. routes match path via all to controlleraction 2. applicationrb 的 exception_app 3. exception_notification configenvironments 4. Slack exception_notification

Men-DD 1926

ubuntu20.04开机黑屏卡在/dev/sda1:clean,***files,***blocks,解决心得记录

这个问题如果你百度,会发现目前有很多种解决方法。 有更新显卡驱动的,有卸载上一次安装软件的,还有各种奇奇怪怪的故障原因。 如果你是属于上述情况,那么按照百度和论坛的各种指引操作一般都能解决。 但我这里主要说一种特殊情况,就是我什么也没有操作,我什么也没干。就是正常使用系统关了机突然就报错了。 这也是自己亲自遇到的问题,做个小记录方便以后自己回顾。 上一次出现这种情况我重装系统了,这次用了两个月又出现了,重装成本太高,我接受不了,于是找到解决办法。 首先找个终端进入,进入终端的方法很多,用安装u盘

qq_41517017的博客 2万+

解读Rails - 处理异常

此文翻译自Reading Rails - Handling Exceptions,限于本人水平,翻译不当之处,敬请指教! 我们今天开始会读一些Rails的源码。我们有双重的目的,先通过学习(Rails)如何处理异常,再扩展到整个Ruby中基础知识的学习。 Rails通过让你使用rescue_from方法,让你在你的controller里边为常见的异常定义处理方法。举例来说吧,你可以在用户试

ye_mingjia的专栏 749

python基础语法与数据结构

本文摘要: Python基础语法包含输入输出、函数、变量、数据类型及运算符等内容。输入函数input()获取键盘输入并以字符串存储,输出函数print()可格式化输出数据。函数通过def定义,可带参数和返回值,提高代码复用性。变量无需声明类型,可动态赋值。数据类型包括数字、字符串、布尔及复合类型,可通过type()查看。运算符包含算术、赋值等类型,其中复合赋值运算符如+=可简化运算。类型转换函数如int()、str()等可实现显式类型转换。这些基础语法构成Python编程的核心要素。

MM602388的博客 433

FastDDS之共享内存

transport层负责为DDS用户数据收发和服务发现提供通信。包含UDP,TCP,SHM。

u010378559的博客 3085

Ruby On Rails异常和解决汇总

/usr/lib/ruby/gems/1.8/gems/execjs-1.2.7/lib/execjs/runtimes.rb:47:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (E...

gaze_ldx的专栏 291

Matlab/simulink频率响应分析方法

Matlab/Simulink仿真系列问题一.电气模块与信号模块 一.电气模块与信号模块

virtuoso~晓晓 3万+

让ActiveRecord在失出连接后自动重新连接数据库

看到了这个,也可以对大家有用,所以就贴出来了。 原文地址:http://snippets.dzone.com/posts/show/5519 我将以下的代码命名为active_record_hacks.rb放在config/initializers目录中,但是它也可以很容易地作为插件使用。 [code="ruby"] ActiveRecord::ConnectionAdapters...

蕲春人的博客 305

Python蓝色跳动的爱心(完整代码)

Python语言实现蓝色跳动的爱心的完整代码。 代码分析 这段代码使用了 库来创建一个动态的爱心图案,并在屏幕上显示带有动态效果的“我爱你”字样。以下是对这段代码的详细分析: 用于创建图形用户界面(GUI)。 用于生成随机数,主要用于控制爱心图案的扩散效果。 中的 , , , 用于数学计算,生成爱心形状和扩散效果。 包含了 等常量,用于控制控件的对齐方式。 2. 全局变量定义 , : 定义画布的大小。 , : 爱心的中心坐标。 : 用于定义爱心形状的缩放

AIGC 1917

SAP_SD模块路径及运输功能后台配置简介

后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义传输模式根据实际运输过程运输地理的类型:海运、公路运输、空运后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义发运类型根据实际运输过程运输方式:汽车、卡车、火车、轮船、飞机后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义运输连接点指在运输过程中需要中转的地区可以维护中转地区的停留的时间后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义路径和阶段。

我小时候很黑的博客 1396

rails的rake出错,认不到RDoc,该如何处理

Ruby版本:1.8.7 gem1.8 list的输出信息: *** LOCAL GEMS *** actionmailer (2.3.12) actionpack (2.3.12) activerecord (2.3.12) activeresource (2.3.12) activesupport (2.3.12) mysql (2.8.1) rack (1.1.

xwnsy86276的专栏 516

【Bug已解决】Request timed out / API Timeout — Claude Code 请求超时解决方案

方案适用场景推荐指数难度方案一:增加超时大任务处理⭐⭐⭐⭐⭐低方案二:切换 SonnetOpus 太慢⭐⭐⭐⭐⭐低方案三:缩小范围大代码库⭐⭐⭐⭐⭐低方案四:优化网络网络延迟高⭐⭐⭐⭐中方案五:减少 MCPMCP 超时⭐⭐⭐中方案六:流式响应长生成任务⭐⭐⭐低根本原因:请求超时最常见原因是请求体过大(35%)和 Opus 模型推理慢(25%),默认 60 秒超时阈值对大型任务不够最佳实践。

一键难忘的博客 5161

Rails异常处理器:打造自定义错误追踪服务

Rails异常处理器:打造自定义错误追踪服务 项目基础介绍与编程语言 Rails异常处理器 是一个专为Ruby on Rails框架设计的高度灵活的异常处理工具,由Bjørn Trøndsen维护并开源在GitHub上。本项目以Ruby为主要编程语言,适配Rails 3到7的所有版本,为企业级开发者提供了一站式的错误捕捉与管理解决方案,尤其适合管理多个Rails应用的高级开发者。 核心功能 此项目...

gitblog_01176的博客 463

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

rails异常(错误处理)

方法1:http://www.uedidea.com/rails%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86.html Ruby代码 defadd_to_cart product=Product.find(params[:id]) rescueActiveRecord::RecordNotFound#拦截Product...

weixin_30500663的博客 731

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

206 Ruby 基础数据类型、错误处理和异常【Rails后端开发训练营】

1 Ruby 基础数据类型 Number String Ranges Symbols true、false nil Array Hash Number # 01.rb a = 123 a = 12.3 String # 02.rb str1 = 'abc' str2 = str1 * 3 Ranges # 03.rb range1 = 1..10 range2 = 1...10 Symbols a = :abc true、false a = true b = false nil c = ni

Ruby Tips 284

Rails Exception Handler

Rails Exception Handler Rails Exception Handler 是一个 Ruby on Rails 插件,用于处理和记录应用程序中的异常。它提供了详细的错误报告,并允许您自定义错误页面和通知。 功能 Rails Exception Handler 可以帮助您: 在生产环境中提供有用的错误页面。 通过电子邮件或第三方服务(如 Slack 或 HipChat)接收错误...

gitblog_00041的博客 376

CanCan异常处理完全指南:从基础到高级错误管理

CanCan是一个强大的Ruby on Rails授权库,专为基于角色的访问控制而设计。在开发过程中,异常处理和错误管理是确保应用程序安全性和用户体验的关键环节。本文将深入探讨CanCan的异常处理机制,帮助您构建更健壮的权限控制系统。 ## 🎯 CanCan异常处理基础 CanCan的核心异常类是`CanCan::AccessDenied`,当用户尝试访问未经授权的资源时,系统会自动抛出此

gitblog_00493的博客 659

Ransack错误处理完整指南:InvalidSearchError异常的最佳实践

Ransack作为Ruby on Rails生态系统中最强大的对象搜索解决方案,其错误处理机制对于构建稳定可靠的应用程序至关重要。在前100个词内,Ransack搜索功能通过InvalidSearchError异常处理确保了数据查询的安全性。本指南将深入探讨Ransack错误处理的最佳实践,帮助开发者避免常见陷阱,提升应用稳定性。🚀 ## 理解InvalidSearchError异常 Ran

gitblog_00208的博客 1020

Heya错误处理与调试:解决邮件序列问题的完整清单

Heya 👋 是一款专为Rails设计的邮件序列工具,它像ActionMailer一样简单易用,但能处理定时邮件序列,还能执行发送短信等其他操作。在使用Heya构建邮件营销活动时,错误处理和调试是确保邮件序列顺利运行的关键环节。本文将提供一份完整的清单,帮助你快速定位和解决Heya邮件序列中的常见问题。 ## 一、常见错误类型与识别方法 Heya在运行过程中可能会遇到多种错误,了解这些错误类

gitblog_01069的博客 684

推荐使用 Solid Errors:简单高效的Rails异常跟踪器

推荐使用 Solid Errors:简单高效的Rails异常跟踪器 solid_errorsdatabase-backed, app-internal exception tracker for Rails applications项目地址:https://gitcode.com/gh_mirrors/so/solid_errors 在开发Rails应用时,错误管理是不可或缺的一部分。Solid...

gitblog_00060的博客 285

Rails Exception Handler 使用教程

Rails Exception Handler 使用教程 项目介绍 Rails Exception Handler 是一个用于处理 Rails 应用程序中异常的开源项目。它提供了一种简单而强大的方式来捕获、记录和处理应用程序中的错误。通过集成到 Rails 的异常处理机制中,开发者可以更轻松地管理和响应各种运行时错误。 项目快速启动 安装 首先,将以下代码添加到你的 Gemfile 中: gem ...

gitblog_00398的博客 1093

money-rails 错误处理指南:解决货币解析和转换中的常见问题

money-rails 是一个将 RubyMoney - Money 与 Rails 框架集成的强大工具,它提供了便捷的货币处理功能,帮助开发者在 Rails 应用中轻松实现货币的解析、转换和验证。 ## 常见错误类型及解决方案 ### 货币解析错误 当输入的货币格式不正确时,money-rails 会出现解析错误。例如,输入包含非数字字符或格式不符合要求的字符串。 默认情况下,money

gitblog_00961的博客 946

Refile错误处理与调试技巧:轻松解决Ruby文件上传难题

Refile作为一款强大的Ruby文件上传处理库,在开发过程中难免会遇到各种上传错误和调试挑战。本文将为你提供一套完整的Refile错误处理与调试解决方案,帮助你快速定位问题、解决难题,确保文件上传功能稳定可靠。 ## 常见错误类型及解决方案 ### 文件验证错误:确保上传文件符合要求 Refile提供了强大的文件验证机制,但错误提示有时不够明确。当用户上传不符合要求的文件时,系统会返回验证

gitblog_00722的博客 1042

关于自定义错误处理

在项目中很多情况希望能自定义处理某些异常情况,通常采用重写rescue_action方法。一般网上能看到的代码都是以下的形式: [code] def rescue_action(exception) rescue_action_in_public(exception) end def rescue_action_in_public(exception) ...

easyfinger 300

处理 Rails 的错误界面

1. 针对runtime error的通常处理   around_filter :rescue_record_not_found def rescue_record_not_found begin yield rescue ActiveRecord::RecordNotFound render :file => "#{RAILS_R...

horace_lee的专栏 161
上一篇: rails 如何清除clear session
下一篇: Ruby Net::HTTP cheat sheet
RunUpwind
博客等级 码龄20年 7粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值