ruby - 捕获 Sequel::Error 异常

标签 ruby sinatra sequel

我有一个使用 Sequel 和 Postgres 的 Sinatra 应用程序...这是一个非常简单的模块,可以插入到数据库中。我想从插入中捕获任何错误并返回有用的消息。

我的代码如下:

begin
   sql = DB["INSERT INTO table (id, firstname, lastname, ...) values (......)"]
   ds.insert
rescue Sequel::Error
   ...
end

如何捕获实际错误?我可以输入“出现错误”并打印出来,但我想要更具体的内容 - 例如“需要名字”、“需要姓氏”。

有人可以帮忙吗?

最佳答案

你可以使用最后一个异常对象魔术常量$!:

rescue Sequel::Error
  p $!.message
end

您还可以更改救援 block 以将异常对象放入变量中:

rescue Sequel::Error => e
  p e.message
end

两者都会打印异常消息。

关于ruby - 捕获 Sequel::Error 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12043551/

相关文章:

mysql - 获取过去五分钟内在 Ruby Sequel 中创建的所有行

ruby - 续集急切加载单个ORM对象的一些关联

ruby - 在连接之前定义 Sequel 模型

ruby-on-rails - NoMethodError,#<#<Class :0xbbb3ed0>:0xbbb34b0> 的未定义方法 `permits_path'

javascript - Selenium 没有捕获 JavaScript 错误

ruby-on-rails - 在 Rails 中使用 Capistrano 部署时无法运行/etc/profile.d/chruby.sh

sinatra - main :Object (NoMethodError) Sinatra 的未定义方法 `run'

ruby - Datamapper 不将数据保存到数据库中

sql - rails : How to Select Records Which Don't Have a Specific Related (associated) Object (SQL EXISTS brief how-to)

ruby - 如何制作 Rack session cookie httponly?