我有一系列使用相同异常处理的方法。
如何将异常检查抽象到一个单独的函数中?
请看下面的例子,非常感谢大家的帮助!
def a
code
begin
rescue 1...
rescue 2...
rescue 3...
rescue 4...
end
end
def b
code
begin
rescue 1...
rescue 2...
rescue 3...
rescue 4...
end
end
我正在尝试创建一个模块来处理我在include中application_controller.rb中的API错误。这是我的模块的self.included函数。
def self.included(clazz)
clazz.class_eval do
rescue_from ActiveRecord::RecordNotFound do |e|
respond(:record_not_found, 404, e.message)
end
rescue_from ActiveRecord::RecordInvalid do |e|
respo
在以下代码中
begin
raise StandardError, 'message'
#some code that raises a lot of exception
rescue StandardError
#handle error
rescue OtherError
#handle error
rescue YetAnotherError
#handle error
end
我想打印一条警告,说明错误的类型和消息,而不向每个救援子句添加print语句,例如
begin
raise StandardError, 'message'
#som
我正在使用一个救援系统(类似于live)来修复Debian服务器上的一些问题,比如:
# mkdir -p /mnt/rescue
# mount /dev/md2 /mnt/rescue
# mount --bind /dev /mnt/rescue/dev/
# mount --bind /proc /mnt/rescue/proc/
# mount --bind /sys /mnt/rescue/sys/
现在我可以使用/mnt/rescue了,但是在我完成之后,如何重新卸载文件系统呢?
umount: /mnt/rescue: target is busy.
(In some
在Ruby/Rails中,有没有一个“包罗万象”的rescue语句也允许更具体的rescue可能性?我试过了
begin
# something
rescue URI::InvalidURIError
# do something
rescue SocketError
# do something else
rescue
# do yet another thing
end
事实证明,即使有URI::InvalidURIError或SocketError,它也会进入最后一个rescue (即,它执行do yet another thing)。我希望将其分别设置为do some
这个周末我遇到了一个有趣的挑战。我想测试以下四个救援声明。你觉得最好的方法是什么?我一直在测试匿名控制器,gets,还有更多,但我将出现空白。这有可能吗?
Rspec
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe ApplicationController, type: :controller do
it 'rescue record not found with 404' do
end
it 'rescue parameter missing
在ruby on rails中,是否可以将多个救援语句合并为一个。
begin
//do something
rescue ArgumentError => e
e.message
rescue NameError => e
e.message
rescue StandardError => e
e.message
end
组合成类似下面的内容
rescue ArgumentError, NameError, StandardError => e
e.message
我试图理解Ruby中的异常,但我有点困惑。我使用的教程说,如果发生了与救援语句标识的任何异常不匹配的异常,则可以使用“occurs”来捕获它:
begin
# -
rescue OneTypeOfException
# -
rescue AnotherTypeOfException
# -
else
# Other exceptions
ensure
# Always will be executed
end
但是,我在后面的教程“救援”中也看到了毫无例外地使用:
begin
file = open("/unexistant_file")
请帮助我找到官方文件,并列出例外情况的类型。我写了这个动作:
def show
begin
@user = User.find(params[:id])
rescue ActiveRecord::RecordNotFound => e
logger.debug e
logger.debug "Error #{$!}"
render_404
end
end
我需要提到几种例外情况:
def show
begin
@user = User.find(params[:id])
rescue Ac
我使用stripe作为支付处理器。
在这个应用程序中,我发送一个请求给Stripe以执行charge或其他类型的进程,并且基本上使用相同的错误处理模板,如下所示。
rescue Stripe::InvalidRequestError => e,
# do something
rescue Stripe::AuthenticationError => e,
# do something
rescue Stripe::APIConnectionError => e,
# do something
rescue Stripe::StripeError =>
这个类
class A
private
def foo
puts :foo
end
public
def bar
puts :bar
end
private
def zim
puts :zim
end
protected
def dib
puts :dib
end
end
A的实例
a = A.new
测试
a.foo rescue puts :fail
a.bar rescue puts :fail
a.zim rescue puts :fail
a.dib rescue puts :fail
a.gaz
我试图为一个简单的api编写一些快速的路由测试,所以我写道:
it "delete" do
delete("/api/notifications/:id").should_not be_routable
end
但我收到了:
Failure/Error: delete("/api/notifications/:id").should_not be_routable
expected {:delete=>"/api/notifications/:id"} not to be routable, but
当涉及到对不同错误的逐次过滤时,援救语句效果很好:
o = Object.new
begin
o.foo
rescue ArgumentError
puts "Object o does define #foo, but you got the argument number wrong!"
rescue NoMethodError
puts "Object o does not respond to #foo!"
else
puts "That's right!"
end
但是,当使用不同的参数拯救相同的错误时,这就是我