- 浏览: 351965 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lliiqiang:
在功能上,由于flex不支持加载外来的类的反射机制,所以可以通 ...
Flex Module专题 -
迪伦少校:
工程报错呢?。。
关于DEGRAFA的简介 -
chwnchwn:
不错的东西
关于DEGRAFA的简介 -
lorry1113:
学习了,多谢!!!!
重写FLEX组件 -
cuixuxucui:
var str:String = "";v ...
AS3 Array学习笔记
http://www.flash-home.com/article/1116.html
问题
我想让程序自己检测和处理遇到的异常。
解决办法
当检测到错误时使用throw 语句抛出异常。把可能出现错误的代码都放到try 块中,然后在
catch 块中进行错误处理。
讨论
Flash 播放器8.5 开始支持try/catch 方法来处理错误。这意味着可以灵活的处理遇到的错误
了。除了语法错误(这时编译器就通不过),其他类型的错误如非法数据等都可以自己处理。
处理异常包括两个部分, 抛出异常和捕获异常。有些异常系统会自动抛出, 比如
IllegalOperationError, MemoryError, 和ScriptTimeoutError. 它们都在flash.errors 包中。除了系
统定义的错误外也可以抛出自定义错误,然后捕获它进行处理。使用throw 语句抛出一个Error
对象或Error 子类实例,比如:
throw new Error("A general error occurred.");
正如我们看到的,Error 构造器接受一个参数,这个信息和这个错误相关联。这个参数是可选
的,依赖于你怎样处理这个错误,你可以不使用,但是大多数情况下都指定一个错误信息作为
调试目的。
一旦异常被抛出,Flash就会暂停当前进程去寻找catch 块去处理异常。任何有潜在错误的代码
都要放在try 块中,如果异常抛出,只有它所在的try 块被暂停,然后相关联的catch 块被调
用,看下面的例子:try {
trace("This code is about to throw an error.");
throw new Error("A general error occurred.");
trace("This line won't run");
}
catch (errObject:Error) {
trace("The catch block has been called.");
trace("The message is: " + errObject.message);
}
上面的代码数出以下信息:
This code is about to throw an error.
The catch block has been called.The message is: A general error occurred.
当然,上面的代码还是过于简单,但是这是个基本框架,可以看到只要抛出异常,try 块就会退
出,catch 块被执行,传递了一个Error 对象给catch.
更多情况下,异常是从函数或方法中抛出的,Flash 会检测该函数是否在try 块内被调用,如
果是,则调用相应的catch 块。
private function displayMessage(message:String):void {
if(message == undefined) {
throw new Error("No message was defined.");
}
trace(message);
}
try {
trace("This code is about to throw an error.");
displayMessage( );
trace("This line won't run");
}
catch (errObject:Error) {
trace("The catch block has been called.");
trace("The message is: " + errObject.message);}
上面的代码输出以下内容:
This code is about to throw an error.
The catch block has been called.
The message is: No message was defined.
如果你不肯定你的函数或方法会在何时或如何抛出异常,这时就应该在try块进行调用。
// 定一个在指定的sprite里的画矩形函数。
private function drawRectangle(sprite:Sprite, newWidth:Number, newHeight:Number):void {
// 检测长和宽的数值是否合法,否则抛出异常。
if(isNaN(newWidth) || isNaN(newHeight)) {
throw new Error("Invalid dimensions specified.");
}
// 如无异常,则画出矩形sprite.graphics.lineStyle(1, 0, 1);
sprite.graphics.lineTo(nWidth, 0);
sprite.graphics.lineTo(nWidth, nHeight);
sprite.graphics.lineTo(0, nHeight);
sprite.graphics.lineTo(0, 0);
}
现在我们在try/catch 语句内调用该函数。
try {
drawRectangle(this, widthB, heightB);
}
catch(errObject:Error) {
this.graphics.clear( );
tOutput.text = "An error occurred: " + errObject.message;
}
另外对于try/catch 语句,还可以加入finally 块,finally 块包含的代码无论是否遇到异常都会
被执行。例如下面的两个例子效果相同:
//没有使用finally:
private function displayMessagetry {
if(message == undefined) {
throw new Error("The message is undefined.");
}
trace(message);
}
catch (errObject:Error) {
trace(errObject.message);
}
trace("This is the last line displayed.");
}
//使用finally:
private function displayMessage(message:String):void {
try {if(message == undefined) {
throw new Error("The message is undefined.");
}
trace(message);
}
catch (errObject:Error) {
trace(errObject.message);
}
finally {
trace("This is the last line displayed.");
}
}
如果在catch中使用了return语句,那结果就不一样了:
//没有使用finally:private function displayMessage(message:String):void {
try {
if(message == undefined) {
throw new Error("The message is undefined.");
}
trace(message);
}
catch (errObject:Error) {
trace(errObject.message);
return;
}
// 这一句没有执行.
trace("This is the last line displayed.");
}
//使用finally:
private function displayMessage(message:String):void {
try {if(message == undefined) {
throw new Error("The message is undefined.");
}
trace(message);
}
catch (errObject:Error) {
trace(errObject.message);
return;
}
finally {
// 执行,不管是否有异常发生。
trace("This is the last line displayed.");
}
}
通过这一节的学习,现在你可以建立复杂的异常处理系统。
发表评论
-
白名单屏蔽字 unicode字符范围
2016-07-05 16:58 839(_word.unicode >= 0x2001 ... -
flash textfiled换行 以及\r和\n区别
2016-06-20 15:11 1947flash.text.TextField.wordWrap ... -
flash 字体
2016-05-20 17:35 7531.FTE和TLF的关系 http://zengr ... -
Flex Date对象与UTC之间的关系
2013-08-07 14:16 2381转自 Flex Date对象与UTC ... -
as3 数据结构array,object,dictionary用哪个
2011-12-29 16:43 4422今天在处理背包物品时,考虑是用Array还是dictionar ... -
CS5 中禁用SimpleButton
2011-12-09 11:48 1917需要在CS5中对一个SimpleButton设置禁用效果,即不 ... -
Event.FRAME_CONSTRUCTED
2011-12-07 19:07 2149_oPBox是个MovieClip,共3帧,其中第1帧有 ... -
使用拼接的属性来访问Object
2011-11-28 15:58 11021.VO:Objectt有这些属性: public ... -
ShareObject简记
2011-10-25 18:58 1057引用: _soundSO = Shared ... -
字符集学习笔记(二)
2011-10-21 14:08 1581参考http://www.discuz.net/thre ... -
字符集学习笔记(一)
2011-10-20 17:17 1611摘自http://bbs.9ria.co ... -
使用AS3帧代码控制动画
2011-10-17 14:26 3957美术同事出了一个资源,大致是这样的:四个角色形象动画,聚在一个 ... -
flash cs将一个MC变成BUTTON
2011-09-15 16:50 1828在FLASH CS中,设置一个MC的三帧名字分别为 ... -
flash中的in关键字
2011-09-08 18:10 1334in这个关键字挺有意思的: package { ... -
VerifyError: Error #1024: 发生堆栈下溢
2011-08-26 16:14 4612今天出现了奇怪的问题,RELEASE版本的背包操作总是报Ver ... -
TextField的高宽autosize
2011-08-17 14:25 3393var t_name:TextField = new Text ... -
FLASH注册点与中心点(转)
2011-08-16 10:23 4807http://space.flash8.net/space/? ... -
flashbuilder不同版本共用工作空间的问题
2011-08-02 13:36 2456今天因为项目需要,安装了FB4.5,当然原来的FB4.0没舍得 ... -
flashplayer内存管理
2011-07-29 11:18 4427参考Flash务实主义(五)——AS3的垃圾回收 ... -
从SVN上的FD项目上,构建FB项目
2011-07-28 15:18 3689说一下概况: 项目是一个FD(FlashDevelop ...
相关推荐
- **异常处理**:Java的try-catch-finally转换为AS3.0的错误处理机制。 - **生成AS3.0代码**:完成所有转换后,生成AS3.0的源代码文件。 4. **相关工具和库** - **J2AS3**:一个可能的Java转AS3.0工具名称,它...
3. **事件处理**:AS 3.0中事件处理模型的改进使得代码更清晰,事件监听器和事件对象的概念是其中的核心。 4. **显示对象和舞台**:DisplayObject类层次结构是AS 3.0图形渲染的基础,包括Sprite、MovieClip、Bitmap...
7. **错误处理**:AS3.0使用try-catch语句进行异常处理,可以在发生错误时执行特定代码,保证程序的稳定性。 8. **优化技巧**:理解垃圾收集机制、减少不必要的计算、使用位运算提升性能等都是AS3.0编程中不可忽视...
9. **错误处理**:良好的错误处理是编写稳健代码的关键,PPT会讲解如何使用try-catch语句捕获和处理异常。 10. **性能优化**:PPT最后可能会讨论AS3.0的性能优化技巧,如避免全局变量、减少不必要的计算和使用位...
1. **数据流(Data Streams)**:在AS3.0中,图片通常以二进制数据流的形式进行处理。`ByteArray`类是用于处理这些二进制数据的核心对象。当用户选择图片文件后,我们可以读取文件内容到`ByteArray`中,为后续的上传...
- `catch`代码块用于捕获并处理异常。 - `finally`代码块无论是否发生异常都会被执行。 ### 9. 循环结构 AS3.0支持多种循环结构,如`for`、`foreach`等。 - `for`循环适用于需要手动控制迭代次数的情况。 - `...
在AS3.0中处理ZIP压缩和解压涉及到了对二进制数据的操作以及文件读写,这对于开发Flash应用或游戏尤其重要,因为这些应用通常需要处理大量的资源。 在AS3.0中,没有内置的ZIP库,但可以通过第三方库来实现ZIP的压缩...
【标题】"纯代码拼图as3.0" 指的是一个使用ActionScript 3.0编程语言实现的九宫格拼图游戏。ActionScript是Adobe Flash平台上的主要脚本语言,主要用于创建交互式内容、动画以及网页应用程序。AS3.0是该语言的一个...
在这个项目中,你使用AS3.0构建了一个音乐播放器,这涉及到多媒体处理、用户界面设计以及事件处理等多个方面的知识。 首先,AS3.0在处理音乐播放时,主要使用了`Sound`类和`SoundChannel`类。`Sound`类用于加载和...
总的来说,这个项目涵盖了ActionScript 3.0的基础语法、图形编程、事件处理、数据结构和算法等多个方面,是学习和实践AS3.0编程的一个良好实例。通过解压文件"8-1",你可以看到项目的源代码和资源文件,进一步深入...
7. **错误处理**:AS3.0提供了异常处理机制,通过try-catch语句可以捕获和处理运行时错误,增强了程序的健壮性。 8. **内置库和类**:Flash Player和 AIR(Adobe Integrated Runtime)为AS3.0提供了丰富的内置类库...
7. **错误处理**:AS3.0支持try-catch语句进行异常处理,使得程序在遇到错误时能更优雅地恢复或终止。 8. **XML和JSON支持**:AS3.0内置了处理XML和JSON数据的类,便于数据交换和序列化。 9. **Display List**:AS...
此外,通过查看源代码,还能了解到如何处理加密过程中可能出现的错误和异常。 总的来说,“CryptoDemo--Flex(AS 3.0)加密算法工具”是一个实践性极强的学习资源,它使Flex开发者能够快速上手加密技术,并在实际项目...
AS3.0(ActionScript 3.0)是Adobe Flash平台上的编程语言,主要用于创建交互式Web内容、游戏以及富互联网应用(RIA)。这个“AS3.0自学电子教案”显然是一个全面的学习资源,旨在帮助用户掌握AS3.0的核心概念和技术...
- AS 3.0引入了try...catch...finally语句进行异常处理,而AS 2.0通常使用onError事件处理错误。 7. **性能提升**: - AS 3.0运行速度比AS 2.0快,因为它使用了ActionScript Virtual Machine 2 (AVM2),优化了...
《经典范例拼图游戏(as3.0)》是一款基于ActionScript 3.0开发的互动游戏,旨在提供一个有趣且具有挑战性的拼图体验。ActionScript 3.0是Adobe Flash Platform的主要编程语言,它在性能、类型检查和编程模型上都有...
9. **声音和视频处理**:AS3.0通过`Sound`和`Video`类提供了对音频和视频的强大支持,可以播放、暂停、控制音量、调整播放速度等。 10. **网络编程**:AS3.0可以使用`URLLoader`和`Socket`类进行HTTP请求和TCP通信...
1. **事件监听与处理**:AS3.0中的EventDispatcher类提供了事件监听和触发机制,这是游戏交互的基础。例如,游戏开始、结束、玩家输入等事件的监听与响应,都需要通过addEventListener和removeEventListener方法来...
在AS3.0中处理XML变得异常简单,几乎就像操作普通的对象一样直观。例如,可以轻松地通过`.`操作符访问XML节点的属性或子节点。这种直接、简洁的语法极大地提高了代码的可读性和维护性。此外,由于AS3.0中的XML支持与...
### AS3.0 学习手册核心知识点解析 #### 一、ActionScript 3.0 简介 - **定义**: ActionScript 3.0 (AS3) 是一种强大的面向对象的编程语言,用于创建交互式应用程序和游戏。它是 Adobe Flash 平台的核心组成部分之...