首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在哪里定义Ruby和/或Rails中的自定义错误类型?

在哪里定义Ruby和/或Rails中的自定义错误类型?
EN

Stack Overflow用户
提问于 2011-03-05 08:50:36
回答 5查看 60.2K关注 0票数 161

是否有在Ruby库(gem)或Ruby on Rails应用程序中定义自定义错误类型的最佳实践?具体地说:

  1. ,它们在项目的结构上属于哪里?一个单独的文件,内联了相关的模块/类定义,在其他地方?
  2. 是否有任何约定来确定何时以及何时不创建新的错误类型?

不同的库有不同的处理方式,我没有注意到任何真正的模式。一些库总是使用自定义错误类型,而其他库则根本不使用它们;一些库在扩展StandardError时出现所有错误,而其他库则具有嵌套层次结构;一些库只是空类定义,而其他库则有各种巧妙的技巧。

哦,只是因为我觉得调用这些“错误类型”有点模棱两可,我的意思是:

class AuthenticationError < StandardError; end
class InvalidUsername < AuthenticationError; end
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-21 00:31:07

针对Gems的

我见过很多次,你是这样定义异常的:

gem目录/库/gem名称/Exceptions.rb

并定义为:

module GemName

  class AuthenticationError < StandardError; end
  class InvalidUsername < AuthenticationError; end

end

httparty中就是这样的例子

Ruby on Rails

将它们放在库/文件夹中的一个名为exceptions.rb的文件下,如下所示:

module Exceptions
  class AuthenticationError < StandardError; end
  class InvalidUsername < AuthenticationError; end
end

你可以这样使用它:

raise Exceptions::InvalidUsername
票数 229
EN

Stack Overflow用户

发布于 2017-05-12 04:09:13

在rails中,您可以创建app/errors目录

# app/errors/foo_error.rb
class FooError < StandardError; end

重新启动spring/server,它应该会重新启动它

票数 29
EN

Stack Overflow用户

发布于 2011-03-21 00:24:56

我认为为了在你的项目中拥有有凝聚力的源文件,你应该在类中定义错误,在这个类中可能抛出它们,而不是在其他地方。

一些层级结构可能是有帮助的-名称空间擅长于将多余的字符串排除在类型名称之外-但这更多的是一个品味问题-如果你的应用程序中至少有一个自定义异常类型,你可以在整个过程中使用它来区分“有意的”和“意外的”异常情况,那么就没有必要走得太远。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5200842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档