说明:
设置系统参数"CalcCTRLWord"可以控制程序中若有nil参与计算以及浮点除0时,进行警告或者程序抛出异常。
设置语法:setsysparam(pn_CalcCTRLWord(),v);
此为全局变量,对设置后的所有程序有效,默认为0,不启动。
系统参数值说明:
异常值运算报错与警告:警告是指在运行信息中运行时打印提醒信息,报错即出现该类运算时直接报错,终止当前程序。
该参数值类型为二进制:(ps:天软中0b开头表示二进制数)
从低位到高位(位值为1则为启动,为0则为不启动,默认都不启动,则默认值为0):
第一位:浮点除0警告
第二位:浮点除0报错
第三位:Nil计算警告
第四位:Nil计算报错
第五位:Nil大小比较警告
第六位:Nil大小比较报错
第七位:Nil等于不等于警告
第八位:Nil等于不等于报错
第九位:Nil.与[]操作返回nil,并警告
第十位:Nil.与[]操作返回nil,不报错也不警告
使用范例01:只提醒,不报错
Echo #127;//清除掉客户端ECHO窗口中的内容
//启动:浮点除0警告,Nil计算警告,Nil大小比较警告,Nil等于不等于警告
setsysparam("CalcCTRLWord",0b01010101); //等同setsysparam("CalcCTRLWord",85);
return array(0/0,
1/0,
Nil*2,
Nil>0,
1+1);
//程序不报错,不终止,且有返回值,打印提醒信息为:
float division by zero at:noname86(TSCheckModel) line: 5
float division by zero at:noname86(TSCheckModel) line: 6
NIL calculation at:noname86(TSCheckModel) line: 7
NIL Numerical great/less comparison at:noname86(TSCheckModel) line: 8
使用范例02:报错+提醒
Echo #127;
setsysparam("CalcCTRLWord",0b11111111); //报错+提醒
return array(0/0,
1/0,
Nil*2,
Nil>0,
1+1);
程序报错:提示第5行出现除0操作
使用范例03:Nil的.与[]操作不报错
setsysparam(pn_CalcCTRLWord(),0x100); //默认是会报错的,设置后不报错只提醒
t:=nil;
return array(t.a,t[1]);
程序不报错,返回数组:array(nil,nil),会打印信息如
NIL invoke at:NoName339(xxx) line: 6
NIL [] get at:NoName339(xxx) line: 6
报错类型有以下六类,分别对应如下:
1、float division by zero :出现除0运算
2、NIL calculation:存在Nil运算
3、NIL Numerical great/less comparison:存在Nil大小比较运算
4、NIL Numerical eq/neq comparison:存在Nil等于或不等于运算
5、NIL invoke:存在Nil.操作
6、NIL [] get:存在Nil[n]操作