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

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

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

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

推荐答案

使用new创建异常的实例:

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

Ruby-on-rails相关问答推荐

在 JS 模块中使用 Rails-UJS(带有 webpacker 的 Rails 6)

Ruby中的`try`和`&.`(安全导航运算符)有什么区别

Heroku:不能运行超过 1 个免费大小的测功机

LoadError:无法加载“听”gem(Rails 5)

Rails: Sprockets::Rails::Helper::AssetNotPrecompiled 在开发中

来自控制台的 ActionCable.server.broadcast

try 加载 gem 'uglifier' 时出错. (Bundler::GemRequireError)

Redis 引发“需要 NOAUTH 身份验证”错误,但没有设置密码

使用omniauth 和Facebook 对用户进行身份验证以获取rails API?

Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有什么不同

RSpec:期望更改多个

'require': 无法加载此类文件 -- 'nokogiri\nokogiri' (LoadError) 在运行 `rails server` 时

参数错误:范围主体需要可调用

迁移:t.references 不允许指定索引名称

在 Rails 中添加可为空的外键

由于 libreadline,rails 控制台无法加载

耙路由错误“缺少:路由定义上的操作键”

带有自定义列名的 Rails belongs_to

如何从 Sidekiq 清除所有作业(job)?

由于机器人,Ruby on Rails“UTF-8 中的字节序列无效”