6_2.WML Script执行时的错误检测与处理

1.严重错误(fatalerror)
  下面的小节会讨论WML Script的严重错误。
  位码错误(bytedode error)
  这些错误跟位码与由WML Script位码解译器所执行的指令有关他们指出了错误的元素群、无效的指令、指令所使用的参数无效,或指令无法执行。
  验证错误(verification failed)
  说明:调用的程序中的特定位码无法通过验证。
  如何发生:每次程序试着用外部程序。
  范例:var a = 3*OtherScript#doThis(param)
  严重性:严重。
  判定状况:当检测位码验证式。
  解决方法:终止程序与WML Script解译其调用者的错误信号。
  说明:调用一个函数库程序时发生严重错误。
  如何发生:每次调用函数库程序。
  范例:var a = string.format(param)
  严重性:严重。
  判定状况:无
  解决方法:终止程序与WML Script解译其调用者的错误信号。
  说明:调用函数参数的数目跟被调用函数的参数数目不符合。
  如何发生:调用外部程序。
  范例:编译器参生一个无效的参数给予指令使用,或者被调用的程序参数数目改变了。
  严重性:严重。
  判定状况:无
  严重性:严重。
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明: 在特定的程序中找不到所需要的外部程序。
  如何发生:调用外部程序。
  范例:var a =3*OtherScript#doThis(param)
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明: 由于在网络服务器的程序存取又无法修复的错误或特定程序并不在网络服务器中所引起的程序无法载入。
  如何发生:调用外部程序。
  范例:var a =3*OtherScript#doThis(param)
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明: 存取错误,所调用的外部程序加了保护。
  如何发生:调用外部程序
  范例:var a =3*OtherScript#doThis(param)
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明: 因为程序错误造成stack underflow。
  如何发生:程序要取出(pop)一个空堆
  范例:当组译器产生错误码。
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明:执行调用Lang.abort()是发生的错误。
  如何发生:每当程序调用Lang.abort()函数。
  范例:Lang.abort("unrecoverable error")
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明:发生堆栈溢出。
  如何发生:程序资源太多或要推入太多的变量到运算之中。
  范例:function f|(x)(f(x+1););
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明:没有多余的内存可供解译器使用。
  如何发生:作业系统无法配置多余的空间给解译器适使用。
  范例:function f(x){
  x=x+"abcdefghijklmnopqrstuvxyz";
  f(x) ;
  };
  严重性:严重。
严重错误(fatalerror)
  下面的小节会讨论WML Script的严重错误。
  位码错误(bytedode error)
  这些错误跟位码与由WML Script位码解译器所执行的指令有关他们指出了错误的元素群、无效的指令、指令所使用的参数无效,或指令无法执行。
  验证错误(verification failed)
  说明:调用的程序中的特定位码无法通过验证。
  如何发生:每次程序试着用外部程序。
  范例:var a = 3*OtherScript#doThis(param)
  严重性:严重。
  判定状况:当检测位码验证式。
  解决方法:终止程序与WML Script解译其调用者的错误信号。
  说明:调用一个函数库程序时发生严重错误。
  如何发生:每次调用函数库程序。
  范例:var a = string.format(param)
  严重性:严重。
  判定状况:无
  解决方法:终止程序与WML Script解译其调用者的错误信号。
  说明:调用函数参数的数目跟被调用函数的参数数目不符合。
  如何发生:调用外部程序。
  范例:编译器参生一个无效的参数给予指令使用,或者被调用的程序参数数目改变了。
  严重性:严重。
  判定状况:无
  严重性:严重。
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明: 在特定的程序中找不到所需要的外部程序。
  如何发生:调用外部程序。
  范例:var a =3*OtherScript#doThis(param)
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明: 由于在网络服务器的程序存取又无法修复的错误或特定程序并不在网络服务器中所引起的程序无法载入。
  如何发生:调用外部程序。
  范例:var a =3*OtherScript#doThis(param)
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明: 存取错误,所调用的外部程序加了保护。
  如何发生:调用外部程序
  范例:var a =3*OtherScript#doThis(param)
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明: 因为程序错误造成stack underflow。
  如何发生:程序要取出(pop)一个空堆
  范例:当组译器产生错误码。
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明:执行调用Lang.abort()是发生的错误。
  如何发生:每当程序调用Lang.abort()函数。
  范例:Lang.abort("unrecoverable error")
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明:发生堆栈溢出。
  如何发生:程序资源太多或要推入太多的变量到运算之中。
  范例:function f|(x)(f(x+1););
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明:没有多余的内存可供解译器使用。
  如何发生:作业系统无法配置多余的空间给解译器适使用。
  范例:function f(x){
  x=x+"abcdefghijklmnopqrstuvxyz";
  f(x) ;
  };
  严重性:严重。

判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明:用户终止程序的执行(如按下reset钮)
  如何发生:随时。
  范例:当应用程序正在执行是用户按下reset钮。
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
  说明:当程序执行中,发生了外部严重的错误。
  如何发生:随时。
  范例:电力微弱,系统自动。
  严重性:严重。
  判定状况:无
  解决方案:终止程序与WML Script解译器调用着的错误信号。
2. 一般错误(Nonfatal error)
  下面说明了WML Script的一般错误:
  计算错误(computational error)
  这些错误是由于WML Script数学上的运算所造成。
  除以零(divide by zero)
  说明:发生了除以零的状况
  如何发生:当程序中有除以零的状况。
  范例:var a= 10;
  var b= 0;
  var x= a/b;
  var y= a div b;
  var z= a%b;
  a/=b;
  严重性:一般。
  判定状况:高
  解决方案:产生结果为invalid。
  说明:发生了除以零的状况
  如何发生:程序要执行浮点数运算。
  范例:var a = Float.precision();
  var b = Float.precision();
  var c = a* b
  严重性:一般。
  判定状况:高,在某些状况很困难。
  解决方法:产生的结果为浮点数值0.0
  常数参考错误(constant reference error)
  说明:所参考的浮点数实字为not a number。
  如何发生:程序试着存取一个浮点数实字但组译器产生了not a number的浮点数常数。
  范例:参考浮点数常数。
  严重性:一般。
  判定状况:高
  解决方法:这会产生invalid值。
  说明:参考的浮点数实字不是正无穷大就是负无穷大的浮点数常数。
  如何发生:程序试着存取一个浮点数实字但组译器产生了正无穷大或负无穷大的浮点数常数。
  范例:参考浮点数常数。
  严重性:一般。
  判定状况:高
  解决方法:这会产生invalid值。
  说明:需要参照浮点数值所发生的错误。
  如何发生:程序需要使用浮点数值但环境值支持整数值。
  范例:var a = 3.14;
  严重性:一般
  判定状况:高
  解决方法:这会产生invalid值。
  转换错误
  这个错误的发生同WML Script所支持的自动转换有关。
  说明:欲转换成整数值,但这个值超过整数所能接受的范围(正或负)。
  如何发生:程序试着自动转换成整数时。
  范例:var a = -"99999999999999999999999999999999999999999";
  严重性:一般
  判定状况:高
  解决方法:这会产生invalid值。
  说明:欲转换成浮点数,但这个值小于浮点数所能接受的范围(正或负)。
  如何发生:程序时值自动转换成浮点数时。
  范例:var a = -"99999999999999999999999999999999999999999";
  严重性:一般
  判定状况:高
  解决方法:这会产生invalid值。
  说明:欲转换成浮点数,但这个值小于浮点数所能接受的范围(正或负)。
  如何发生:程序时值自动转换成浮点数时。
  范例:var a = -"99999999999999999999999999999999999999999";
  严重性:一般
  判定状况:高
  解决方法:这会产生浮点数0.0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值