我admin_user = User.new
admin_user.admin = true
admin_user.email = 'your@email.com'
admin_user.password = 'my_new_password'
admin_user.password_confirmation = 'my_new_password'
admin_user.save
&syserr.
的预期错误。遇到错误时,程序将终止并显示以下消息:
1020
我知道问题是什么,并且没有解决方案。但是,由于我知道导致问题的原因,我想在程序终止之前提醒用户如何修复它。
也就是说,在错误发生和程序中止之间,我想执行一些代码。
我在互联网上搜索过,找不到任何说不能做的事情。事实上,关于SO的许多答案暗示它可以完成。但我不知道怎么做。
答案 0 :(得分:1)
由于您知道正在设置& syserr,因此可以选择编写自己的%OnError宏,例如:
%macro OnError(debug=0);
%if &syserr ne 0 %then %do;
%*blah blah blah;
%end;
%mend OnError;
所以你的代码看起来像是:
data want;
set have;
oops;
run;
%OnError()
请注意,& syserr会在每个步骤边界后重置,因此您需要在可疑步骤后立即对其进行测试。还有其他宏变量,其返回代码仍然存在。
如果错误足以让SAS进入语法检查模式(设置obs = 0和noreplace),则必须执行更多操作才能恢复。但我认为这在交互式SAS中默认是关闭的。
答案 1 :(得分:0)