日期:2014-05-18  浏览次数:20376 次

DDN 推荐给 AjaxPro.net 初/中级用户的一种简单实用的 AjaxPro 错误/调试 处理方式
A.   需求说明

发现有不少网友在用   AjaxPro,看大家提供的代码示例,基本上都没有进行错误处理,
甚至很多朋友都不知道,对于   AjaxPro   返回的响应结果对象有一个   error   属性表示是否发生了错误。
AjaxPro   服务端采取基于异常的处理方式,假如调用发生异常,
返回的   error   属性包含了该异常(   Exception   对象)的相关信息,包括错误信息,堆栈信息,引发异常的方法和对象。

这里提供自己实际使用   AjaxPro   中对于错误处理实用函数,通过一个窗口级的自定义变量,可以简单的实现
Debug   和   Release   版本切换。Debug   版本显示服务器端详细异常错误,Release   版本显示自定义信息。


B.   如何实现

只有一个函数:   function   showAjaxProError(error,   customMessage)

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