flash as2的异常error

前几天在调试一个AS2跟后台通信的程序,一直看不到正常的数据显示,然后就挨行trace,终于发现问题所在了.
原来是用了AS2的一个JSON类,如果格式不是json格式就会抛出异常,因为我们的数据格式不会错的,要么就没有数据,否则不会出现格式错误的,所有就没有try catch.
刚好这次测试的时候有一个元素里没有数据,json串为""(空字符串).然后解析的时候抛了个异常,我没有捕获,就终止那段程序.
请看AS2的JSON里抛异常的方式:

 

 代码如下 复制代码
function error(m) {
 throw {
  name: 'JSONError',
  message: m,
  at: at - 1,
  text: text
 };

}这里直接抛出一个Object而不是Error类的实例, 然而AS2的异常提示跟AS3不同.
AS3:
在装有debug flashplayer的浏览器里弹出一个窗口提示错误.
在IDE的output面板里显示类似下面的错误提示.

 代码如下 复制代码
Error: this is an error!
 at _fla::MainTimeline/frame1()AS2:

在装有debug flashplayer的浏览器里不提示任何错误.
在IDE的output面板里仅输出抛出的对象或类型的String形式.

this is an error!OK,看了这两个不同,再看AS2的JSON抛出异常的方式,它仅仅抛出一个Object对象.
然后Object对象转到String默认是 [object Object] 这样一个字符串的.
当我看到这个字符串输出后,首先想到的是哪里直接输出对象了.根本没有想到会是JSON抛出的异常.
所以问题就很难被发现,最后终于在我一行一行trace下找到原因了 

好了,有了上面的经验,我可以定制一些规则,好让问题更容易的被发现.
throw异常的时候一定要抛出Error或者Error的子类的实例.
因为用Error有下列的优势:

Error本身就有toString()方法,我们就不会再为模糊的[object Object]而烦恼了.
AS3的Error还有getStackTrace()方法来追踪错误发生的地点.虽然只能在debug版本里用.
常规我们捕获异常的时候只会判断Error 类似于 catch(err:Error)这样的,但是如果我们不是throw的Error或Error的子类,那么这个异常就不能被捕获.

时间: 2024-08-30 08:10:53

flash as2的异常error的相关文章

Flash AS2 中的拍照图片无损压缩

压缩 我们都说无损压缩吧,保留点阵数据.此法压缩的数据已经接近BMP格式的图片大小,我的机器花费大约1秒处理200*200的图片,比未压缩的字符的压缩比率为50%.具体图片比较黑暗则压缩更好. 引用:未压缩文本:295k压缩文本:143k高阶压缩:127kBMP图片(200*200一样的图片):117k 压缩结果类似: 引用:200,200='c,'c,'c,'c,'c,Eg,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,Eg,Eg,Eg,'c,

Flash AS2教程:鼠标感应放大缩小图片效果

  第一步:我们新建flash文档,帧频设置为40,我们导入一张图片或者在主场景中画一个东西,然后右键转换为元件--影片剪辑元件. 第二步:现在在你的库面板中是否是有元件一?如果做对的话是肯定有的(就是你第一步转化成的元件),我们新建一影片剪辑元件,把元件一拖到元件2的舞台中,然后回到元件1中进行第三步 第三步:到元件一中的第8帧插入关键帧(以帧频来确定),默认帧频下为8帧差不多了,在场景中把此元件用左边的任意变形工具使其放大一定程度,然后在第16帧处又插入一关键帧,又使其缩小到第一帧的大小,然

win7下Flash字体显示异常,解决

刚换了win7系统 ,原有Flex项目中的字体显示出现不一致的情况,如下图 且,几部电脑安装该系统盘均出现上述情况,而用另外系统碟装的系统却正常. 由于该Flash项目调用的是系统中的字库,可初步判断是字库的问题 . 解决:更换系统字库 在C:\Windows\Fonts 目录下 存放的就是系统所有的字体, 更换也挺简单,只需要复制其他系统的全部字体过来,覆盖该系统的字体即可

flash AS2地图缩放类实现代码

 代码如下 复制代码 stop(); var DefaultX = 0; var DefaultY = 0; var DefaultValue = true; var _C = mapMC.Content; _C._alpha = 0; _RW = Stage.width; _RH = Stage.height; _MW = mapMC._width; _MH = mapMC._height; var coordinate:XML = new XML(); coordinate.ignoreWh

flash As2和As3的右键菜单实例代码

As3:右键菜单  代码如下 复制代码 var myContextMenu:ContextMenu = new ContextMenu(); myContextMenu.hideBuiltInItems(); //声明菜单新项 var item:ContextMenuItem = new ContextMenuItem("@author amyflash"); //添加到菜单显示项目数组 myContextMenu.customItems.push (item); root.conte

Flash Builder 4 RemoteService Error

问题描述 ERROR:XMLparseerror:Erroronline1ofdocument:cvc-elt.1:Cannotfindthedeclarationofelement'model'.Nestedexception:Cannotfindthedeclarationofelement'model'. 解决方案 解决方案二:找不到元素'model'解决方案三:如何解析这个问题啊???解决方案四:无码无真相解决方案五:[img=http://bbs.airia.cn/handler/do

javaweb异常提示信息统一处理(使用springmvc,附源码)

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 一.前言 后台出现异常如何友好而又高效地回显到前端呢?直接将一堆的错误信息抛给用户界面,显然不合适. 先不考虑代码实现,我们希望是这样的: (1)如果是页面跳转的请求,出现异常了,我们希望跳转到一个异常显示页面,如下: 当然,这里的界面不够美观,但是理论是这样的. (2)如果是ajax请求,那么我们,希望后台将合理的错误显示返回到ajax的回调函数里面,如下: $.ajax

error: png.h not found.

执行php安装 --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl 出现了第二次异常error: png.h not fo

虚拟器 运行异常-android开发虚拟器运行异常

问题描述 android开发虚拟器运行异常 error loading /system/media/audio/ui/KeypressInvalid.ogg