2

我正在用 Ruby 编写一个命令行实用程序,并对检查参数组合是否有效的逻辑进行编码。如果我发现一个错误,如果我不打算恢复,那么引发 ArgumentError 与当场调用 abort() 有什么好处?一般来说,如果没有尝试恢复的计划,建议什么时候引发异常而不是中止?我假设异常路由是可取的,因为需要某种优雅的关闭,而不是简单地退回到命令行。

4

2 回答 2

6

总是,总是引发异常而不是中止。中止是丑陋的,如果你真的不能有意义地继续,你会使用最后的手段。

您可以在ArgumentError: 之后继续,您可以告诉用户正确的语法是什么,并且可以打印帮助消息。或者,也许稍后您在另一个项目中重用参数解析器,它可以处理错误。(实际上,一个常见的习惯是在异常块中调用参数解析器,如果参数解析器引发错误,则打印出帮助消息)。

在任何情况下,默认行为ArgumentError都类似于 abort,但您可以用它做更多的事情。因此,我认为您应该采用这种更灵活的解决方案。

于 2014-09-15T19:52:29.133 回答
0

当需要停止执行代码或重定向到错误处理程序时,在任何编程语言使用中引发错误,这可以随心所欲地处理它。

于 2014-09-15T19:52:06.147 回答