我在后台运行耗时的代码,并且由于do文件开头的语法错误,通常甚至10%的代码都没有执行.
我更希望执行do-file的其余部分,因为有时候开头的错误对最后的计算没有影响.
(第2版)
希望Stata忽略错误本身就是错误的.
如果在文件文件的早期出现错误,通常会对后续内容产生影响.
假设你让Stata按你的意愿工作.你怎么知道Stata是否忽略了一些重要的东西或一些微不足道的东西?如果它忽略了一些微不足道的东西,那应该很容易修复.如果它忽略了重要的事情,那就是错误的决定.
现在让我们更有建设性.帮助do告诉你有一个nostop选项.您需要非常小心如何使用它,但它可以在这里提供帮助.
背景do, nostop恰恰是OP的背景.人们有做文件,通常需要花费很长时间才会因为大数据集或大量繁重的计算,并将它们设置为历史"过夜"或"当你去吃午餐"时.然后他们会因为发现do文件在第一次错误时很快终止而感到恼怒,如果错误是微不足道的话,特别恼火.所以,这个想法do, nostop是do尽可能多的,你可以,但作为辅助调试.例如,假设您在各个地方输入的变量名称错误; 你可以generate Y参考y后面的,但不存在.您可能希望找到分散在文件中的相应错误消息,您可以修复该消息.错误消息是这里的关键.
关于do文件的一点是,一旦它们是正确的,你可以节省很多时间,但没有人承诺过,首先获取do文件总是很容易.
我的建议是:修复错误; 不要试图忽略它们.
capture在另一个答案中提到了PS .capture在精神上可能看起来相似,但以类似的方式使用它可能是一个坏主意.
capture吃错误消息,因此用户看不到它们.对于调试,这与所需的相反.
capture 它实际上是一个程序员的命令,它的用途是程序员代表用户变得聪明并保持沉默.
例如,假设提供的变量可以是数字,也可以是字符串.如果是数字,我们需要做A; 如果它是字符串我们需要做B.(A或B可能是"没有".)可能有像这样的分支.
capture confirm str variable myvar
if _rc { /// it's numeric
<do A>
}
else {
<do B>
}
Run Code Online (Sandbox Code Playgroud)
否则,capture用于处理可预测的问题,如果出现的话.它不是为了忽略错误.
| 归档时间: |
|
| 查看次数: |
6233 次 |
| 最近记录: |