Stata是否有类似于Java的"try and catch"机制?

CHE*_*HKA 10 java try-catch stata

我写的.do是检查一些.dta文件中是否存在某些变量,以及检查这些变量是否存在某些值.但是,我的代码在遇到无效的变量名时停止执行.

我知道我混合Java和Stata编码,这是完全不合适的,但有什么方法可以做我喜欢的事情:

try {
su var1
local var1_mean=(mean)var1
local var1_min=(min)var1
local var1_max=(max)var1
...
}
catch (NoSuchVariableException e) {
System.out.println("Var1 does not exist")
}
// So that the code does not stop executing...?
Run Code Online (Sandbox Code Playgroud)

Nic*_*Cox 27

简短的回答是肯定的.稍微长一点的答案是,与Java类比,猜测语法可能是成功的最小机会.最好阅读Stata的文档,例如,首先浏览[P]手册中的主要条目.

被困的问题是不var1存在.这段代码是合法的,或者我相信:

capture su var1, meanonly 

if _rc == 0 { 
     local var1_mean = r(mean)
     local var1_min  = r(min)
     local var1_max  = r(max)
}
else display "var1 does not exist"
Run Code Online (Sandbox Code Playgroud)

这个想法是双重的.capture吃它前缀命令的任何错误,但仍然可以访问返回码_rc.非零返回码是错误代码.

相关命令confirm例如是

capture confirm var var1 
Run Code Online (Sandbox Code Playgroud)

检查变量是否var1存在.

  • Stata在Java的第一个起源之前就已经存在,所以在很好的近似中,语法的任何相似性都必须反映事故或共同的灵感来源.但斯塔塔从未承诺过任何其他事情; 它用很多东西来表达自己的话语. (2认同)