抛出 Exception / Error 时的错误处理
Error handling when Exception / Error is thrown
我会尽量保持简短。
在 ruby 中,如果抛出异常,return 另一个值的最佳方法是什么?我有空气制动器通知我异常情况,但我不想阻止该过程继续进行。到目前为止,我有这样的事情:
house = House.find(1)
visitor_count = begin
house.visitors.count
rescue => e
Airbrake.notify(e)
0
end
想知道除了开始块之外是否还有其他方法可以做到这一点。谢谢!
您的解决方案(孤立地)很好。这是组织相同逻辑的另一种方式:
def num_house_visitors(id)
House.find(id).visitors.count
rescue => e
Airbrake.notify(e)
0
end
不过,我建议您首先尝试处理或防止异常情况发生:
house = House.find_by(id: id) # assuming Rails/ActiveRecord
house = Struct.new('MissingHouse', :visitors).new([]) if house.nil? # prevent nil errors
# House#visitors (and MissingHouse#visitors) always returns an array
vistor_count = house.visitors.count # this can't fail
我会尽量保持简短。
在 ruby 中,如果抛出异常,return 另一个值的最佳方法是什么?我有空气制动器通知我异常情况,但我不想阻止该过程继续进行。到目前为止,我有这样的事情:
house = House.find(1)
visitor_count = begin
house.visitors.count
rescue => e
Airbrake.notify(e)
0
end
想知道除了开始块之外是否还有其他方法可以做到这一点。谢谢!
您的解决方案(孤立地)很好。这是组织相同逻辑的另一种方式:
def num_house_visitors(id)
House.find(id).visitors.count
rescue => e
Airbrake.notify(e)
0
end
不过,我建议您首先尝试处理或防止异常情况发生:
house = House.find_by(id: id) # assuming Rails/ActiveRecord
house = Struct.new('MissingHouse', :visitors).new([]) if house.nil? # prevent nil errors
# House#visitors (and MissingHouse#visitors) always returns an array
vistor_count = house.visitors.count # this can't fail