一种简单实用的 AjaxPro 调试/错误处理方式

A.  需求说明

发现有不少网友在用  AjaxPro,看大家提供的代码示例,基本上都没有进行错误处理, 
甚至很多朋友都不知道,对于  AjaxPro  返回的响应结果对象有一个  error  属性表示是否发生了错误。 
AjaxPro  服务端采取基于异常的处理方式,假如调用发生异常, 
返回的  error  属性包含了该异常(  Exception  对象)的相关信息,包括错误信息,堆栈信息,引发异常的方法和对象。 
 
这里提供自己实际使用  AjaxPro  中对于错误处理实用函数,通过一个窗口级的自定义变量,可以简单的实现 
Debug  和  Release  版本切换。Debug  版本显示服务器端详细异常错误,Release  版本显示自定义信息。

B.  如何实现 

只有一个函数: function showAjaxProError(error, customMessage) 
代码为自说明式。

None.gif //  defines a variable indicating the application is under debug version
None.gif//
 comments the line out when releasing the application
None.gif//
 if(!window.AjaxProDEBUG) { window.AjaxProDEBUG = true; }
None.gif
function  showAjaxProError(error, customMessage)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif    
if(!window.AjaxProDEBUG) dot.gif{
InBlock.gif        
var msg = !customMessage ? error.Message : customMessage;
InBlock.gif        alert(
"系统错误\n\n" + msg);        
ExpandedSubBlockStart.gifContractedSubBlock.gif    }
 else dot.gif{
InBlock.gif        
var win = window.open("AjaxProError""");
InBlock.gif        
var doc = win.document;    
InBlock.gif        doc.write(
"<html><head><title>AjaxProError:")
InBlock.gif        doc.write(error.Type);
InBlock.gif        doc.write(
"</title></head><body><div><h3>");
InBlock.gif        doc.write(
"AjaxPro 调用发生未处理的异常");
InBlock.gif        doc.write(
"</h3>");
InBlock.gif        doc.write(
"<pre>");
InBlock.gif        doc.write(
"Type" + ":\n   " + error.Type + "\n"); // 异常类型
InBlock.gif
        doc.write("Message" + ":\n   " + error.Message + "\n"); // 异常信息  
InBlock.gif
        doc.write("Stack" + ":\n" + error.Stack + "\n"); // 堆栈跟踪
InBlock.gif
        doc.write("TargetSite" + ":\n   " + error.TargetSite + "\n"); // 引发异常的方法
InBlock.gif
        doc.write("Source" + ":\n   " + error.Source + "\n"); // 导致异常的对象 
InBlock.gif
        doc.write("</pre>");    
InBlock.gif        doc.write((
new Date()).toLocaleString());
InBlock.gif        doc.write(
"<br/><br/>");
InBlock.gif        doc.write(
"<input type='button' value='close' οnclick='window.close()' />");
InBlock.gif        doc.write(
"</div>");
InBlock.gif        doc.close();
ExpandedSubBlockEnd.gif    }

InBlock.gif    
return false
ExpandedBlockEnd.gif}


C.  如何使用 

ExpandedBlockStart.gif ContractedBlock.gif function  displayServerDateTime()  dot.gif {
InBlock.gif        
var res = AjaxProSample.GetServerDateTime2(document.getElementById("chkGenError").checked);
InBlock.gif        
if(res.error) return showAjaxProError(res.error);
InBlock.gif        alert(
"DateTime from Web Server is " + res.value.toLocaleString());
ExpandedBlockEnd.gif    }

None.gif    
None.gif    
function  showServerDateTime()
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {   
ExpandedSubBlockStart.gifContractedSubBlock.gif        
var callback = function(res) dot.gif{
InBlock.gif            
if(res.error) return showAjaxProError(res.error);
InBlock.gif            
var spnServerTime = document.getElementById("spnServerTime");        
InBlock.gif            spnServerTime.innerHTML 
= res.value.toLocaleString();    
ExpandedSubBlockEnd.gif        }
        
InBlock.gif        AjaxProSample.GetServerDateTime(callback);        
ExpandedBlockEnd.gif    }


D.  更多信息







E. 完整源码

下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值