try...catch的使用与预编译

一,try…catch的使用

try…catch语句标记要尝试的语句块,并指定一个出现异常时抛出的响应。
try...catch的使用与预编译

二,try…catch的声明

  • try…catch
  • try…finally
  • try…catch…finally

三,try…catch的描述

  • try语句包含了由一个或者多个语句组成的try块, 和至少一个catch子句或者一个finally子句的其中一个,或者两个兼有。
  • catch子句包含try块中抛出异常时要执行的语句。也就是,你想让try语句中的内容成功, 如果没成功,你想控制接下来发生的事情,这时你可以在catch语句中实现。 如果在try块中有任何一个语句(或者从try块中调用的函数)抛出异常,控制立即转向catch子句。如果在try块中没有异常抛出,会跳过catch子句。
  • finally子句在try块和catch块之后执行但是在下一个try声明之前执行。无论是否有异常抛出或捕获它总是执行。

四, 预编译

1,步骤
语法分析
预编译
解释执行

2,预编译执行前
作用域 全局(Global Object) 局部作用 (AO Activation Object)
函数声明提前,变量声明提前,且函数的预编译发生在函数执行前一刻。

  1. 创建AO对象(Active Object)
  2. 查找函数形参及函数内变量声明,形参名及变量名作为AO对象的属性,值为undefined
  3. 实参形参相统一,实参值赋给形参
  4. 查找函数声明,函数名作为AO对象的属性,值为函数引用

3.预编译

  1. 查找全局变量声明(包括隐式全局变量声明,省略var声明),变量名作全局对象的属性,值为undefined
  2. 查找函数声明,函数名作为全局对象的属性,值为函数引用