btnInvoke的click事件的处理函数为btnInvoke_onclick(),其代码如下:
function btnInvoke_onclick() {
var a = $get("tbA").value;
var b = $get("tbB").value;
MathService.Divide(a, b, onSucceeded, onFailed);
}
注意其中粗体部分,即调用Web Service客户端代理的一行。其中不但传入了被除数和除数(a和b),还传入了成功调用后的回调函数onSucceeded以及失败时的回调函数onFailed。
成功调用时的回调函数onSucceeded()比较简单,这里不赘:
function onSucceeded(result) {
$get("btnInvoke").value = result;
$get("result").innerHTML = "";
}
失败时的回调函数onFailed()才是本示例程序的重点:
function onFailed(error) {
// 取得异常信息。
var stackTrace = error.get_stackTrace();
var message = error.get_message();
var statusCode = error.get_statusCode();
var exceptionType = error.get_exceptionType();
var timeout = error.get_timedOut();
// 显示异常信息。
$get("result").innerHTML =
"<strong>Stack Trace: </strong>" + stackTrace + "<br/>" +
"<strong>Service Error: </strong>" + message + "<br/>" +
"<strong>Status Code: </strong>" + statusCode + "<br/>" +
"<strong>Exception Type: </strong>" + exceptionType + "<br/>" +
"<strong>Is Timeout: </strong>" + timeout;
$get("btnInvoke").value = "?";
}
可以看到,onFailed()函数首先取得了传递进来的Sys.Net.WebServiceError对象的各个属性,然后再依次显示到id为result的<div />中。
这样就完成了本示例程序的编写。运行该程序并尝试做一些除法,若程序编写正确的话,你将看到如图3-4、图3-5和图3-6所示的界面。
当然,本示例程序的目的是为了演示调用服务器端Web Service时发生异常的处理方法,所以自然事无巨细地将所有异常信息均显示了出来。而在实际开发中,我们则不应该完整显示出此类唐突的异常细节。通常的做法是根据不同的异常进行相应的处理,并在需要的情况下再为用户显示出相对友好的提示消息。
文章来源于领测软件测试网 https://www.ltesting.net/