新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   >>中国XML论坛<<     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论WAP/WML, XMPP, Mobile Web Service, Windows Mobile, Symbian, PalmOS, Android, 嵌入式数据库, 无线搜索等移动嵌入式软硬件开发技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML 与 移动嵌入式开发 』 → [推荐] WAP开发入门与提高 [连载] 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 104185 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: [推荐] WAP开发入门与提高 [连载] 举报  打印  推荐  IE收藏夹 
       本主题类别: 基于XML的移动通信协议    
     enyaxp 帅哥哟,离线,有人找我吗?巨蟹座1984-7-4
      
      
      威望:2
      等级:计算机学士学位(版主)
      文章:350
      积分:2433
      门派:XML.ORG.CN
      注册:2007/12/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给enyaxp发送一个短消息 把enyaxp加入好友 查看enyaxp的个人资料 搜索enyaxp在『 XML 与 移动嵌入式开发 』 的所有贴子 点击这里发送电邮给enyaxp  引用回复这个贴子 回复这个贴子 查看enyaxp的博客楼主
    发贴心情 

    5.4 执行时的错误检测与处理

    WML Script函数的功能提供用户服务,并希望用户界面能在任何的状况下运作顺利,因此错误的处理是最大的课题,这表示了语言可能不提供预期的机制,如他应该可以防止错误发生或提醒用户注意并采取适当的动作,种植储蓄执行是最后的手段。下面几个小节列出了当为码下载并执行时会发生的错误,一些程序上的错误并不在谈论的范围(如无穷循环),像这类的例子就需要手动来终止。

    5.4.1 错误检测

    错误检测工具能让你检测错误但会干扰系统的动作,因为WML Script是弱格式语言,所以由一些特殊功能的工具来检测有invalid数据格式所引起的错误:

    检测给定的变量包含的是正确值:WML Scritp含有格式确认函数库程序如:Lang.isInt()Lang.isFloat()、Lang.parseInt()、Lang.parseFloat。

    检测给定的变量包含的只是正确的格式:WMLScript含有运算符typeof与isvalid能让你使用。

    5.4.2错误处理

    错误处理是在发生错误之后,有些状况是错误检测无法防止的,如内存限制后外部信号等,或者是数据很难处理,如溢出(overflow)或亏失(underflow),而这些状况可以分为两类:

    严重错误(fatalerror):这种错误会造成程序终止,因为WML Scritp程序会让一些用户界面调用,程序终止通常会跟调用它的用户界面发出信号,用户界面就会告知用户这个错误。

    错误(non-fatalerrow):这种错误会把信号传回程序,如一些特殊的值,然后由程序决定所要采取的行动。

    下列的错误是根据他们的严重性来区分。

    5.4.3 严重错误(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解译器调用着的错误信号。

    5.4.4 一般错误(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。

    ----------------------------------------------

    I'M BACK, NEVER GO AWAY.

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/2/27 0:47:00
     
     GoogleAdSense巨蟹座1984-7-4
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML 与 移动嵌入式开发 』 的所有贴子 点击这里发送电邮给Google AdSense  访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/6/26 1:19:54

    本主题贴数29,分页: [1] [2]

     *树形目录 (最近20个回帖) 顶端 
    主题:  [推荐] WAP开发入门与提高 [连载](15192字) - enyaxp,2008年2月23日
        回复:  楼主 赞一个。请问 能否提供一个WORD 版本 供下载? 如果有的话 能否给我发一份:yuanha..(95字) - 柳絮飞,2008年5月5日
            回复:  不好意思,没有WORD版本,我是在别的论坛上找到转过来并重新排了一下版(现在想起那个工作量还是很..(275字) - enyaxp,2008年5月6日
        回复:  不错,好.(10字) - zhoubinbin,2008年4月11日
        回复:  6.5 URL函数库名称:URL说明:这个函数库包含了处理绝对的URL与相对URL的程序,一..(6635字) - enyaxp,2008年2月27日
            回复:  楼主,你好,很激动能找到这么全的WML的资料,不过你能不能推荐点或是发一些关于WAP开发的案例资料..(118字) - xingzhewujiang,2010年8月17日
        回复:  6.4 string函数库名称:字符串说明:这个函数库包含了字符串程序的集合,一个字符串可以..(10412字) - enyaxp,2008年2月27日
            回复:  6.7 Dialog函数库名称:对话说明:这个函数库包含典型的用户界面程序。prompt..(984字) - enyaxp,2008年2月27日
            回复:  6.6 WML浏览器函数库名称:WML Brower说明:这个函数库所包含的程序是让WML ..(2629字) - enyaxp,2008年2月27日
        回复:  6.3 Float函数库名称:Float说明:这个函数库包含了典型与常用的浮点数算术程序。..(2010字) - enyaxp,2008年2月27日
        回复:  [B]第六部分:WML Script标准函数库[/B]这节会讨论标准的WML Script函数..(5857字) - enyaxp,2008年2月27日
        回复:  5.4 执行时的错误检测与处理WML Script函数的功能提供用户服务,并希望用户界面能在任..(6138字) - enyaxp,2008年2月27日
        回复:  5.3 预编译WML Script的预编译主要用于在编译阶段控制编译器的行为。与编译头一般在文..(4545字) - enyaxp,2008年2月27日
        回复:  5.2 函数的声明与调用在WML Script中,函数是一种能够完成某种功能的代码块,并可以在..(6809字) - enyaxp,2008年2月27日
        回复:  不错丫好好瞅瞅我呵呵(24字) - tinyqueen,2008年2月26日
        回复:  [B]第五部分:WML Script脚本程序设计[/B]作为一种编辑语言,WMLScript提..(9936字) - enyaxp,2008年2月23日
        回复:  4.5 操作符与表达式在WMLScript中,表达式可以把变量、常量与操作符结合起来,经过运..(5964字) - enyaxp,2008年2月23日
        回复:  4.3 WMLScript基本规则WMLScript在许多基本规则方面沿用了WML的做法。不过..(10103字) - enyaxp,2008年2月23日
        回复:  [B]第四部分:WML Script语法基础 -- WML Script介绍[/B]WML ..(2660字) - enyaxp,2008年2月23日
        回复:  [B]第三部分:WML主要语法 -- 文本格式化及其元素[/B]3.7 文本格式化及其元素..(1890字) - enyaxp,2008年2月23日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    1,951.172ms