如何使用backtrace创建例外?
我知道我们可以做这样的事情来实现这个目标:
begin
raise StandardError, "message"
rescue StandardError => exception
exception.backtrace
end
Run Code Online (Sandbox Code Playgroud)
要么
exception = StandardError.new("message")
exception.set_backtrace(caller)
Run Code Online (Sandbox Code Playgroud)
但我正在寻找这样的事情:
exception = StandardError.new("message", backtrace: caller)
Run Code Online (Sandbox Code Playgroud)
有没有办法可以使用自定义消息和回溯来初始化异常?
提前致谢!!!
saw*_*awa 13
您无法使用回溯初始化异常,但您可以在初始化后立即分配一个异常.
exception = StandardError.new("message")
exception.set_backtrace(caller)
Run Code Online (Sandbox Code Playgroud)
自己封装一个函数类:
class ErrorCreator
def self.new(error, message = nil, backtrace: caller)
exception = error.new(message)
exception.set_backtrace(backtrace)
exception
end
end
Run Code Online (Sandbox Code Playgroud)
使用:
ErrorCreator.new(StandardError, "failed")
ErrorCreator.new(StandardError, "failed", backtrace: caller)
Run Code Online (Sandbox Code Playgroud)
我创建了一个 gem 供任何人使用: https: //github.com/JuanitoFatas/active_error。
归档时间: |
|
查看次数: |
3529 次 |
最近记录: |