所以我想要做的是在运行时检查引发的错误是否是特定异常列表的子类。用户可以在运行时提交异常数组。
我以为我只是使用is_a?
它,它可以按预期针对单个类工作。
class A < Exception; end
class B < A; end
class C < Exception; end
class D < Exception; end
begin
raise B.new
rescue e
puts e.is_a? A
end
但是如果我然后使用一组异常来检查,它就不再起作用了
monitored = [A, C]
begin
raise B.new
rescue e
monitored.each do |exception_class|
puts e.is_a? exception_class
end
end
我得到的错误是Syntax error in eval:24: expecting token 'CONST', not 'exception_class'
第 24 行是puts e.is_a? exception_class
.
puts typeof(exception_class)
在循环中Exception:Class
按预期打印。
任何想法我在这里做错了什么?
显然,对于当前编译器实现的问题中提到的确切情况,这是不可能的:https : //github.com/crystal-lang/crystal/issues/2060#issuecomment-309711343
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句