Crystal lang Crystal检查类列表的子类是否
所以我想做的是检查引发的错误是否是运行时特定异常列表的子类。用户可以在运行时提交一系列异常 我想我应该只使用Crystal lang Crystal检查类列表的子类是否,crystal-lang,Crystal Lang,所以我想做的是检查引发的错误是否是运行时特定异常列表的子类。用户可以在运行时提交一系列异常 我想我应该只使用is\u 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 我得到的错误是eval:24中的语法错
is\u 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
我得到的错误是eval:24中的语法错误:应该是标记“CONST”,而不是“exception\u class”
,第24行是put e.is\u a?异常类
将typeof(exception\u class)
放入循环,按预期打印exception:class
你知道我做错了什么吗 显然,对于问题中提到的当前编译器实现的确切情况,这是不可能的: 所以我要做的是检查引发的错误是否是特定异常列表的子类 您可以按类型进行救援: 哪张照片
# => A or C
嗯,是的,如果异常列表在编译时是已知的,那就行了,但是我希望用户能够在运行时提交一个异常数组并检查它,然后您可以使用类名或更好的唯一ID来识别异常类型。面向用户的配置应该与内部名称分离。
begin
raise B.new
rescue e : A | C
puts "A or C"
rescue B
puts "B"
rescue
puts "any other kind of exception"
end
# => A or C