有时,我们使用经过良好调试且通常不会导致错误的库。尽管如此,这些库仍可能由于我们滥用其 API 而返回错误。在这种情况下,这些库内部的步骤会显示在错误的回溯中,从使用库的程序员的角度来看,这只是垃圾,并且很难发现错误的原因。甚至核心 Ruby 中的一些方法也会在回溯中插入一些内部步骤。例如,每当您看到涉及 的回溯时Enumerable#inject
,总是Enumerable#each
会从中调用它,这会出现在回溯中并且很烦人。
从回溯中删除某些给定库的内部步骤的好方法是什么?我目前正在通过解析回溯并按文件名过滤它。有更好的方法吗?
当您自己编写库时,是否有一种好方法可以抑制出现在涉及使用该库的方法调用的回溯中的内部步骤?一种明显的方法可能是为要从库外部使用的每个方法插入一对
rescue
和raise
,但这似乎不正确。