Pro JavaScript (13)

January 23, 2006 at 3:17 am | Posted in JavaScript | 1 Comment

Pro JavaScript (13) 错误处理

—————————————————————————————————————————

ECMAScript规范v3中加入了对try..catch..finally throw的支持。而对于早期的浏览器由于不支持异常处理语句,所以只有用原始的函数返回值(如-1true/false)来进行判断(结合alert语句)。

语法错误与运行时错误。另外对于BOMwindow对象(和image对象)有一个onerror方法,可以定义错误处理例程与之关联,进行错误处理。

使用onerror方法

Windowonerror方法可以传入几个参数来描述具体错误的情况,按顺序分别为,错误信息,URL,错误行。

alert语句会把详细错误信息输出,注意:最后,把返回值置为true,为的是对浏览器遮蔽该错误(也就是浏览器的debugger不会显示错误)。

Onerror主要的缺点是由于是BOM的支持,所以不同浏览器的实现行为有所不同。而且对于SafariKonqueror也不支持window.onerror

使用try..catch..finally来捕捉异常

注意的是,Javacatch不同,JavaScript只能有一个catch语句,因为它不是强型别语言,所以无法判断异常的型别,所以所有的错误都通过一个catch语句来处理。但是JavaScript的异常还是有不同的类型的,它们的基类为Error,都具有namemessage两个属性,它们包括:

如何根据不同的类型来进行处理呢?因为无法使用多个catch,所以只有在catch语句内使用if…else,并通过该异常的name属性是否等于某种异常类型来判断,当然使用(oException instanceof XxxxError

)语句也可以,这样更Java-like一些。

使用xxx.name==xxxError

使用instanceof语句

使用Throw抛出异常

JavaScript可以说什么都可以抛出,抛出的可以是一个string,一个数字,一个布尔值,一个实际的对象,当然也可以抛Error对象。当抛出Error时,需要构造一个Error对象,Error对象的构造子只接受一个参数,即message

使用Java console进行Debug

可以在JavaScript中直接使用java.lang.System.out.println()来把输出写入Java Console,除IE不支持外,其他浏览器基本都支持。

MozilliaJavaScript DebuggerVenkman的使用

(venkman来自Dr.Pater Venkman,是电影《捉鬼队》中主角的名字)

命令行的使用:

/break http-patterns line_num

/stop /cont

/next (step over)

/step (step in)

/finish (step out)

/watch-expr variable_name

Advertisements

1 Comment »

RSS feed for comments on this post. TrackBack URI

  1. haha….ntold u b4,SLEEP CAN SOLVE ALL PROB..nrite??nnex time when u ”fan” jz sleep.. Come on http://tropaadet.dk/hubbardstevens9836081830


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Blog at WordPress.com.
Entries and comments feeds.

%d bloggers like this: