【发布时间】:2013-02-18 11:30:02
【问题描述】:
有时,我们使用经过良好调试且通常不会导致错误的库。尽管如此,这些库仍可能由于我们滥用其 API 而返回错误。在这种情况下,这些库内部的步骤会显示在错误的回溯中,从使用库的程序员的角度来看,这只是垃圾,并且很难发现错误的原因。甚至核心 Ruby 中的一些方法也会在回溯中插入一些内部步骤。例如,每当您看到涉及Enumerable#inject 的回溯时,总会从其中调用Enumerable#each,这会出现在回溯中并且很烦人。
从回溯中删除某些给定库的内部步骤的好方法是什么?我目前正在通过解析回溯并按文件名过滤它。有没有更好的方法?
当您自己编写库时,是否有一种好的方法可以抑制出现在涉及使用该库的方法调用的回溯中的内部步骤?一种明显的方法可能是为要从库外部使用的每个方法插入一对
rescue和raise,但这似乎不正确。
【问题讨论】:
-
Enumerable#rejectFTW :) -
看起来像方面(我更喜欢aquarium for ruby)是你正在寻找的。见 e。 G。 “Wrapping” an Exception(向下滚动几个屏幕。)