gpt4 book ai didi

ruby-on-rails - 在 Rails 的模块中定义自定义异常

转载 作者:行者123 更新时间:2023-12-04 03:52:08 26 4
gpt4 key购买 nike

我创建了一个自定义模块(目前只定义了一个新的异常类),并将它放在 lib/lib_th.rb 下。

module LibTH
module Error
IDNotFound = Class.new
end
end

我不需要在我的代码中要求/包含该模块,因为它应该自动加载,因为它遵循传统的命名规则。

但是当我尝试提高 IDNotFound我的代码中某处的异常:
res.size == 0 ? raise LibTH::Error::IDNotFound : res

我收到以下错误:
SyntaxError (/Users/lrnz/code/ruby/corinna/app/models/treasure_hunt.rb:49: syntax error, unexpected tCONSTANT, expecting kDO or '{' or '('
res.size == 0 ? raise LibTH::Error::IDNotFound : res
^
/Users/lrnz/code/ruby/corinna/app/models/treasure_hunt.rb:49: syntax error, unexpected ':'
res.size == 0 ? raise LibTH::Error::IDNotFound : res
^):
app/controllers/treasure_hunts_controller.rb:50:in `show'

奇怪的是,我在尝试引发 script/console 中的异常时没有遇到任何问题。 :
>> raise LibTH::Error::IDNotFound
LibTH::Error::IDNotFound: LibTH::Error::IDNotFound
from (irb):70

谢谢!

最佳答案

没关系,我自己解决了这个问题:

而不是使用 if ? then : else声明,我将其扩展为:

raise LibTH::Error::IDNotFound if res.size == 0
res

看来你不能在类 C 的 if 中使用常量值(作为类名)声明,因此:
syntax error, unexpected tCONSTANT, expecting kDO or '{' or '('

谢谢阿西!

关于ruby-on-rails - 在 Rails 的模块中定义自定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1092222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com