我将rails中的模型上的自定义异常定义为一种包装异常:(begin[code]rescue[raise custom exception]end)

当我引发异常时,我想向它传递一些关于a)模型实例的信息,该模型的内部函数引发了错误,以及b)捕获的错误.

这是一种自动导入模型的方法,该方法由来自外部数据源的POST请求填充.

太长,读不下go 了既然您自己定义了异常,那么如何将参数传递给异常呢?我对该异常有一个initialize方法,但raise语法似乎只接受一个异常类和消息,没有传递到实例化过程中的可选参数.

推荐答案

使用new创建异常的实例:

class CustomException < StandardError
  def initialize(data)
    @data = data
  end
end
# => nil 
raise CustomException.new(bla: "blupp")
# CustomException: CustomException

Ruby-on-rails相关问答推荐

带有data-turbo的rails`link_to‘未获得turbo_stream请求格式

Trailblazor 操作 -> 集合 :attribute(has_many 通过关联) 与填充器 -> 如何填充 Reform::Form 形式的 slugs 数组?

只允许用户在 Rails 中输入字母和数字

Rails 7:加载所有刺激控制器

'elseif' 还存在吗?

NameError:未定义的局部变量或方法记录器

Rails 5:如何从数据库中删除列?

$redis 全局变量与 ruby​​ on rails

使用回形针进行简单裁剪

如何在 Rails 中使用 instance_eval 子句删除验证?

Rails 助手应该假设实例变量存在还是应该将它们作为参数接收?

Rails - 从日期和时间戳获取日期

如何解决弃用警告方法 to_hash 已弃用并将在 Rails 5.1 中删除

关闭 Firefox 中文本字段的自动完成功能

如何从 rails 控制器操作发出 404 响应?

如何在每个操作的基础上禁用 Ruby on Rails 的日志(log)记录?

如何翻译 ActiveRecord 模型类名称?

在任何来源中都找不到 thread_safe-0.3.0

您可以在弹性 beantalk 环境中运行 rails 控制台或 rake 命令吗?

Rails:您已经激活了 rake 10.3.1,但您的 Gemfile 需要 rake 10.2.2 (Gem::LoadError)