最佳实践:在ruby中使用系统提供的或自定义异常的错误条件?

前端之家收集整理的这篇文章主要介绍了最佳实践:在ruby中使用系统提供的或自定义异常的错误条件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
ruby中编写一个相当简单的命令行工具我需要在命令行参数中报告有关错误的有意义的消息,或者在程序中报告其他错误条件. (输入文件未找到,输入格式无效等)

现在,在检测参数列表中的错误时,我只需用一个明智的描述引发ArgumentError.这是一个很好的做法,还是冒着隐藏编程错误的风险呢?换句话说,Ruby中的系统定义的异常是否意味着应用程序的使用,还是应该总是创建自己的异常来报告非系统错误

编辑:
例如,如果我调用一个参数数不正确的方法,ruby会引发ArgumentError.这是一个编程错误,我想告诉有关堆栈跟踪和所有.但是,当输入到我的程序是不正确的,我可能想给用户一个简短的消息,甚至默认忽略它.这给我建议,ArgumentError不适合自己使用的应用程序.

解决方法

我相信最好的做法是提高你自己的自定义错误,命名空间在一个模块中.所有特定的异常类都应该继承自继承自StandardError的一个命名空间异常.所以对于你的情况:
module MyApp
  class Error < StandardError; end
  class ArgumentError < Error; end
end

并在用户提供坏参数时引发MyApp :: ArgumentError.这样就可以区分代码中的参数错误.并且您可以使用MyApp :: Error从高级别处理您的应用程序中的任何未捕获的异常.

你也应该看看Thor.它可以处理大多数用户参数的东西给你.您可以查看Bundler一个很好的cli使用示例.

猜你在找的Ruby相关文章