0
在Sequel中使用交易時,您應該能夠引發異常並使其從交易塊中跳出。續集交易包裝異常而不是重新註冊
從續集文檔:
如果任何其他異常升高時,事務回滾,並引發異常外塊:
DB.transaction do # BEGIN
raise ArgumentError
end # ROLLBACK
# ArgumentError raised
然而,似乎自從Sequel把它包裝在Sequel::DatabaseError
:
begin
DB.transaction do
raise ArgumentError.new('Hey')
end
rescue => e
puts e.inspect
puts e.kind_of?(ArgumentError)
end
後,我無法趕上
結果:
> #<Sequel::DatabaseError: ArgumentError: Hey>
> false
我該如何解決這個問題?
這項工作? 'puts e.message ['ArgumentError'] =='ArgumentError'' –
是的,但是它很糟糕,如果異常是深層次結構的一部分,它會擾亂異常流程,所以我寧願避免這種解決方案。 – Seralize
然後'把e.message =='Hey''?應該工作。它可以幫助你理解錯誤的來源。 –