草庐IT

c++ - ofstream异常处理

全部标签

我可以覆盖用 C 编写的 Ruby 方法吗?

是否可以使用Ruby代码覆盖Ruby本身的一部分方法,例如rb_error_frozen,它们是用C语言编写的?背景:我想知道当卡住的对象被修改时,是否有可能让Ruby仅记录警告,而不引发异常。这样,我可以记录各种状态修改,而不是在第一次发生时停止。我主要考虑使用YARV执行此操作,但如果这样更容易,我可以使用其他实现。是的,这是一个whyday项目!不要在生产环境中尝试这个! 最佳答案 我只能代表MRI/YARV,但我会试一试。如果C函数已明确定义为Ruby对象上的方法,则只能在Ruby中覆盖源自C的函数。例如,Kernel#ex

ruby-on-rails - 如何正确捕获 Controller 操作中的异常?

有如下代码:defindex@posts=User.find_by(login:params[:user_id]).postsend如您所见,如果没有用户登录,此代码会生成异常(无指针异常)。我怎样才能捕获这个异常并正确处理它?我知道如何在Ruby中捕获异常,但我想知道如何以良好的Rails风格来做。同样的问题可能发生在不同的Controller中——也许我应该创建一个Action包装器,捕获异常并呈现500错误? 最佳答案 最简单的方法是使用ApplicationController的rescue_from:classApplic

ruby - 我应该如何使用 EventMachine 处理这个用例?

我有一个应用程序可以对客户端发送的消息使用react。一条消息是reload_credentials,应用程序会在新客户端注册时收到该消息。然后,此消息将连接到PostgreSQL数据库,查询所有凭据,然后将它们存储在常规Ruby哈希(client_id=>client_token)中。应用程序可能收到的一些其他消息是start、stop、pause,它们用于跟踪某些session时间。我的观点是,我设想应用程序以下列方式运行:客户端发送消息消息进入队列正在处理队列但是,例如,我不想阻塞react器。此外,假设我在队列中有一条reload_credentials消息。在从数据库重新加载

ruby-on-rails - Ruby无一异常(exception)地获得回溯

我有一个RubyonRails应用程序,其中一个模型的验证失败。对于此验证可能失败的地方,代码库有不同的入口点。我有兴趣弄清楚它是从哪里来的。由于这是一个简单的验证方法,因此不涉及任何异常,我只是从方法中返回false并且保存失败。目前是否还可以记录回溯以查明此验证源自哪个服务/路由,以便我可以查看是什么导致此对象的状态发生更改以使其验证失败? 最佳答案 你可以试试caller():deffoo2putscallerenddeffoofoo2#line5endfoo#line7结果:test.rb:5:in`foo'test.rb:

ruby-on-rails - 强制 Rails 3 动态查找器抛出 RecordNotFound 异常?

是否可以强制Rails动态查找器在找不到结果时抛出ActiveRecord::RecordNotFound异常而不是返回nil?例如,如果名称为“Nuka–Cola”的饮料不存在:@not_found=Beverage.find_by_name('Nuka–Cola')而不是拥有@not_found==nil可以吗.find_by_name('Nuka–Cola')方法调用抛出ActiveRecord::RecordNotFound异常?或者我是否必须检查nil并手动抛出异常? 最佳答案 使用bang版本。@not_found=Be

ruby-on-rails - 如何检查 Rails 3.x 中错误处理的特定救援条款?

我有以下代码:beginsite=RedirectFollower.new(url).resolverescue=>eputse.to_sreturnfalseend抛出如下错误:方案http不接受注册表部分:www.officedepot.com;方案http不接受注册表部分:ww2.google.com/something;操作超时-connect(2)如何为所有类似方案http不接受注册表部分的错误添加另一个救援?因为我想做的不仅仅是打印错误并在这种情况下返回false。 最佳答案 视情况而定。我看到三个异常描述不一样。异常类

Ruby,哪个异常最适合处理未设置的环境变量?

我编写的脚本在启动时运行,需要设置环境变量,但是Ruby的Exceptions,是最好的?我使用了LoadError,我只是想尽可能具有描述性并遵循适当的约定。其次,除了检查环境变量的长度外,我找不到其他方法来查看是否设置了环境变量,但这似乎不太优雅。beginraiseLoadErrorifENV['FOO'].to_s.length==0system"openhttp://example.com/"+ENV['FOO']rescueException=>eputs"=>#{e}FOOenvironmentvariablenotset"end 最佳答案

ruby-on-rails - 可以在 Thread::handle_interrupt block 之外异步处理 ruby​​ 异常吗?

乍一看,我以为新的ruby​​2.0Thread.handle_interrupt会解决我所有的异步中断问题,但除非我弄错了,否则我无法让它做我想做的事(我的问题在最后和标题中)。从文档中,我可以看到如何避免在某个block中接收中断,将它们推迟到另一个block。这是一个示例程序:duration=ARGV.shift.to_it=Thread.newdoThread.handle_interrupt(RuntimeError=>:never)do5.times{putc'-';sleep1}Thread.handle_interrupt(RuntimeError=>:immedia

Ruby 堆栈级别太深异常不是来自递归无限循环

编辑:(已解决)实际上它可能是因为无限循环而引发的我正在编码,在添加一个方法后我得到了这个:user_name@the_computer:/media/ECC3-C3B0/Prog/mts/src/mts$raketest--trace**Invoketest(first_time)**Executetest/home/user_name/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:stackleveltoodeep(SystemStackError)rakeabo

c - 命令行错误消息的 "POSIX-defined format"是什么?哪个标准?

在ruby​​-doc.org上page我发现了以下关于命令行选项/参数解析(getopt库)的内容:ReturntheappropriateerrormessageinPOSIX-definedformat.Ifnoerrorhasoccurred,returnsnil.命令行错误消息的POSIX定义格式是什么?它是哪个POSIX标准?编辑:我必须澄清一下,我对标准/推荐的错误消息很感兴趣解析命令行参数/选项。在下面的链接(答案)中,我发现只提到了getopt的这种错误格式:"%s:illegaloption--%c\n",,"%s:optionrequiresanargument-