国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

dotnet中的出錯(cuò)處理

dotnet中的出錯(cuò)處理

更新時(shí)間:2022-05-01 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

近日給老美做外包項(xiàng)目,被老美逼出來(lái)了一套關(guān)于錯(cuò)誤處理的方法,在此不敢藏拙,奉獻(xiàn)出來(lái)給大家批判。

首先,屏蔽程序中所有的自動(dòng)錯(cuò)誤處理,千萬(wàn)不要出來(lái):“
System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: 服務(wù)器無(wú)法處理請(qǐng)求。”等錯(cuò)誤頁(yè)面,而應(yīng)該是一些簡(jiǎn)單易懂的東西,俺在此使用的是Duwamish 7.0里的錯(cuò)誤處理頁(yè)面:
<body >
<H2>An error has occurred</H2>
<P>We were unable to complete your request. This failure has been logged with our
system administrators, who are currently working to resolve the problem. We
apologize for any inconvenience caused by this temporary service outage, and we
appreciate your patience as we work to improve our web site.</P>
</body>
當(dāng)然,要做到這一點(diǎn)也很簡(jiǎn)單,可以在web.config里這樣配置(假如你的錯(cuò)誤頁(yè)面叫Error.aspx):
<customErrors
defaultRedirect = "Error.aspx"
mode="On"
/>
這個(gè)配置你可以給據(jù)你的需要修改(比如mode的值)。


其次,要把錯(cuò)誤信息寫(xiě)到日志中去。
我們定義錯(cuò)誤日志信息的結(jié)構(gòu)如下
public struct ErrorLogItem
{
public string User ;//當(dāng)前登錄人
public string AppName ;//應(yīng)用程序名稱(chēng)
public string ClassName ;//錯(cuò)誤發(fā)生的類(lèi)名稱(chēng)
public string FunctionName ;//錯(cuò)誤發(fā)生的方法(事件)名稱(chēng)
public string Position ;//錯(cuò)誤的位置(或其它信息)
public string ErrorInfo ;//錯(cuò)誤信息
public DateTime OccurTime ;//錯(cuò)誤發(fā)生的時(shí)間
}

錯(cuò)誤日志類(lèi)如下所示:
public class ErrorLog
{
private static ErrorLog _Instance = null ;
private static string strRootName ;
private static XmlElement xmlRoot ;
private static XmlDocument xmlDoc ;
private ErrorLog()
{
Load() ;
}
private bool Load()
{
if (!File.Exists(AppGlobal.ErrorLogFile))
CreateErrorLogFile(AppGlobal.ErrorLogFile);

if (xmlDoc == null)
xmlDoc = new XmlDocument() ;
try
{
xmlDoc.Load(AppGlobal.ErrorLogFile) ;
}
catch
{
return false ;
}
xmlRoot = xmlDoc.DocumentElement ;
if (xmlRoot != null)
strRootName = "/" + xmlRoot.Name + "/" ;
return true ;
}
private void CreateErrorLogFile(string strFileName)
{
StringBuilder sb = new StringBuilder() ;
sb.Append("<?xml version='1.0\' ?> ") ;
sb.Append("<errorlog>") ;
sb.Append("</errorlog>") ;

XmlDocument xmlDoc = new XmlDocument() ;
xmlDoc.LoadXml(sb.ToString()) ;
xmlDoc.Save(strFileName) ;
}
private void AddXmlAttribute(XmlElement xNode,string strAttr,string strAttrvalue)
{
XmlAttribute xAttr = (XmlAttribute)xmlDoc.CreateNode(XmlNodeType.Attribute,strAttr,null) ;
xAttr.InnerText = strAttrvalue;
xNode.Attributes.Append(xAttr) ;
}
public void SetErrorLog(ErrorLogItem errItem)
{
XmlElement xErrorElement = xmlDoc.CreateElement("error") ;

AddXmlAttribute(xErrorElement,"username",errItem.User);
AddXmlAttribute(xErrorElement,"application",errItem.AppName);
AddXmlAttribute(xErrorElement,"classname",errItem.ClassName);
AddXmlAttribute(xErrorElement,"functionname",errItem.FunctionName);
AddXmlAttribute(xErrorElement,"position",errItem.Position);
AddXmlAttribute(xErrorElement,"occurtime",errItem.OccurTime.ToString("g"));
xErrorElement.InnerText = errItem.ErrorInfo ;

xmlRoot.AppendChild(xErrorElement) ;

if (xmlRoot.ChildNodes.Count > AppGlobal.MaxErrorLogCount)
xmlRoot.RemoveChild(xmlRoot.FirstChild) ;
xmlDoc.Save(AppGlobal.ErrorLogFile) ;
}

public static ErrorLog Instance()
{
if(_Instance == null)
{
_Instance = new ErrorLog() ;
}
return _Instance ;
}
}//end class

我們可以通過(guò)調(diào)用SetErrorLog方法來(lái)把信息寫(xiě)到日志中去。
當(dāng)然,日志的位置以及日志記錄錯(cuò)誤信息的數(shù)量也是可以配置的
<appSettings>
<add key="errlogfile" value="c:\ddmsLog.xml" />
<add key="maxerrlogcount" value="1000" />
</appSettings>
我們可以通過(guò)下面的方法得到他們的值:
public static string ErrorLogFile
{
get
{
return ConfigurationSettings.AppSettings["errlogfile"].Trim() ;
}
}
public static int MaxErrorLogCount
{
get
{
return int.Parse(ConfigurationSettings.AppSettings["maxerrlogcount"].Trim()) ;
}
}

再次,我們還要把錯(cuò)誤信息自動(dòng)發(fā)到我們的信箱中(這一點(diǎn)很重要--至少對(duì)我這個(gè)項(xiàng)目來(lái)說(shuō),我不能跑到美國(guó)去調(diào)試,也不能老是讓老外告訴我發(fā)生了什么錯(cuò)誤)
發(fā)送郵件的方法如下:
public static bool SendErrorLogMail(string StrTo,ErrorLogItem errItem)
{
MailLink.Load(AppGlobal.MAIL_CFG_FILE_PATH) ;

string StrName = MailLink.GetNodeText(MAILLINKITEM.USERNAME) ;
string StrCode = MailLink.GetNodeText(MAILLINKITEM.PASSWORD) ;

string strFrom = MailLink.GetNodeText(MAILLINKITEM.MAILFROM) ;
string strSubject = "Error Log" ;
string strSmtpServer = MailLink.GetNodeText(MAILLINKITEM.MAILSMTPSERVER) ;

string strMailBody = "<div>An error occur </div>" ;
strMailBody += "<div>Login User:" + errItem.User + "</div>" ;
strMailBody += "<div>Applicatin Name:" + errItem.AppName + "</div>" ;
strMailBody += "<div>ClassName:" + errItem.ClassName + "</div>" ;
strMailBody += "<div>Function Name:" + errItem.FunctionName + "</div>" ;
strMailBody += "<div>Error Position:" + errItem.Position + "</div>" ;
strMailBody += "<div>Error Information:" + errItem.ErrorInfo + "</div>" ;
strMailBody += "<DIV> </DIV>" ;
strMailBody += "<DIV> </DIV>" ;
strMailBody += "<DIV>" + errItem.OccurTime + "</DIV>" ;

bool blResult = MailLink.SendMail(StrTo,strMailBody,strSubject,strFrom,StrName,StrCode,strSmtpServer) ;

return blResult ;
}
意思大家應(yīng)該明白,里面具體的一些方法調(diào)用大家可以寫(xiě)自己的代碼來(lái)代替。
當(dāng)然,郵箱地址也是可以配置的:
<appSettings>
<add key="errorlogemail" value="zl3624@china.com" />
</appSettings>
取出方法:
public static string ErrorLogEmail
{
get
{
return ConfigurationSettings.AppSettings["errorlogemail"].Trim() ;
}
}
最后,是用一個(gè)方法來(lái)調(diào)用寫(xiě)日志和發(fā)郵件的方法:
public static void LogAppError(Exception thisErr,string strClass,string strFunc,string strPos,string strUser)
{
ErrorLogItem errItem = new ErrorLogItem() ;

errItem.AppName = "Your AppName" ;
errItem.ClassName = strClass ;
errItem.ErrorInfo = thisErr.ToString() ;
errItem.FunctionName = strFunc ;
errItem.OccurTime = DateTime.Now ;
errItem.Position = strPos ;
errItem.User =strUser ;

try
{
ErrorLog.Instance().SetErrorLog(errItem) ;
SendErrorLogMail(ErrorLogEmail,sb.ToString()) ;
}
catch
{
}
finally
{

}
throw new Exception("An error occur :"+thisErr.ToString()) ;
}
那么,怎樣在程序中捕獲異常哪?
下面是俺的一段代碼:
public DataSet GetPrsnInfo(int aiTrx_no,int aiIncid_no,int aiPrsn_id)
{
try
{
ddmsWsPInfo.CandiService ddmsCS = new ddmsWsPInfo.CandiService() ;
ddmsCS.Url = AppGlobal.WebServicesUrl ;
DataSet dsPrsn = ddmsCS.GetPrsnInfo(aiTrx_no,aiIncid_no,aiPrsn_id) ;
ddmsCS.Dispose();
return dsPrsn ;

}
catch(Exception e)
{
string strErr = "aiTrx_no=" + aiTrx_no + " aiIncid_no=" + aiIncid_no + " aiPrsn_id=" + aiPrsn_id ;
AppGlobal.LogAppError(e,"PrsnManager","GetExtraPrsn",strErr,LoginUser.UserID) ;
return null ;
}
}

呵呵,這樣錯(cuò)誤處理應(yīng)該差不多了吧?

溫馨提示:喜歡本站的話(huà),請(qǐng)收藏一下本站!

本類(lèi)教程下載

系統(tǒng)下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        在线观看欧美精品| 成人aaaa免费全部观看| 91福利在线免费观看| 欧美羞羞免费网站| 日韩欧美另类在线| 国产精品免费视频网站| 日韩精彩视频在线观看| 福利电影一区二区| 欧美一区二区三区在线电影| 欧美经典三级视频一区二区三区| 一区二区三区中文在线观看| 麻豆国产91在线播放| 国产成人午夜片在线观看高清观看| 91黄色免费版| 亚洲www啪成人一区二区麻豆| 国产aⅴ综合色| 亚洲伦在线观看| 视频在线在亚洲| 久久九九99视频| 免费成人av在线| 欧美日韩国产免费一区二区| 国产精品久久久久影院老司 | 欧美三级欧美一级| 国产精品久久久久久久久免费樱桃 | 首页欧美精品中文字幕| 精品少妇一区二区三区视频免付费| 亚洲国产美女搞黄色| 99精品视频在线观看免费| 久久综合99re88久久爱| 男人的天堂久久精品| 久久精品一区八戒影视| 欧美图片一区二区三区| 国产精品正在播放| 久久久综合网站| 国产91精品入口| 天堂成人免费av电影一区| 国产精品素人视频| 日韩一区二区视频| 国产一区二区精品久久| 久久亚洲春色中文字幕久久久| 91视频com| 一区二区三区四区中文字幕| 欧美va亚洲va在线观看蝴蝶网| av亚洲产国偷v产偷v自拍| 中文字幕五月欧美| 欧美日韩一区二区欧美激情| 国产成人免费视| 麻豆精品视频在线观看免费| 亚洲国产精品久久久久婷婷884| 国产天堂亚洲国产碰碰| 欧美福利视频一区| 国产不卡视频一区| 狠狠狠色丁香婷婷综合激情 | 国产一区三区三区| 日韩黄色片在线观看| 亚洲国产视频直播| 亚洲国产精品一区二区尤物区| 国产精品久久久久久久午夜片| 久久色中文字幕| 久久久久综合网| 久久久av毛片精品| 亚洲精品一区二区精华| 91丨九色porny丨蝌蚪| 成人中文字幕电影| 亚洲va韩国va欧美va| 怡红院av一区二区三区| 亚洲女爱视频在线| 亚洲自拍偷拍欧美| 欧美韩国日本综合| 国产欧美视频在线观看| 欧美剧情片在线观看| 欧美精品欧美精品系列| 欧美精选在线播放| 精品国产成人系列| 中文字幕精品一区| 一区二区三区在线高清| 日韩电影在线一区二区三区| 国产精品福利影院| 亚洲精品成a人| 日韩精品亚洲一区二区三区免费| 日韩精品亚洲一区二区三区免费| 日本不卡一二三| 国产91富婆露脸刺激对白| 97久久精品人人做人人爽| 91黄色小视频| 久久亚洲精华国产精华液| 亚洲色图另类专区| 亚洲国产精品99久久久久久久久 | 在线综合+亚洲+欧美中文字幕| 大陆成人av片| 色网综合在线观看| 成人午夜电影久久影院| jizz一区二区| 91精品免费在线观看| 国产欧美一区二区精品久导航 | 亚洲国产成人在线| 一区二区三区欧美在线观看| 美女视频免费一区| 在线观看91视频| 久久免费的精品国产v∧| 亚洲精品国产高清久久伦理二区| 免费观看日韩av| 色拍拍在线精品视频8848| 日韩欧美专区在线| 亚洲一区二区中文在线| 国产激情一区二区三区| 欧美高清激情brazzers| 亚洲人123区| 国产成人av电影在线| 91精品国产欧美一区二区成人| 日韩毛片一二三区| 粉嫩av一区二区三区在线播放| 91精品国产一区二区三区| 亚洲精品视频免费观看| 成人激情午夜影院| 久久精品一区二区三区不卡牛牛| 日韩av一区二区三区四区| 欧美在线免费播放| 亚洲美女偷拍久久| www.久久久久久久久| 欧美大尺度电影在线| 午夜一区二区三区在线观看| 亚洲精选视频在线| 国产成人av一区二区三区在线观看| 精品视频在线免费看| 亚洲视频香蕉人妖| www.亚洲色图| 国产精品欧美极品| 成人18精品视频| 欧美国产乱子伦| 岛国精品一区二区| 国产精品丝袜在线| 91亚洲精华国产精华精华液| 中文字幕精品一区| 成人av中文字幕| 中文字幕在线不卡视频| 不卡的电视剧免费网站有什么| 国产欧美一区二区精品性色超碰| 国产91在线看| 亚洲欧美乱综合| 欧美在线免费观看亚洲| 午夜影院久久久| 日韩欧美另类在线| 国产一区二区导航在线播放| 久久久久国产精品麻豆ai换脸 | 中文字幕高清一区| 成人av资源网站| 亚洲综合免费观看高清完整版在线 | 日韩av电影天堂| 日韩欧美国产精品一区| 麻豆91免费观看| 久久一区二区三区国产精品| 国产一区二三区| 国产精品第13页| 欧洲在线/亚洲| 卡一卡二国产精品| www.日韩大片| 亚洲永久免费视频| 欧美一卡二卡三卡| 国产成人8x视频一区二区| 一区二区三区在线视频免费 | 在线观看一区日韩| 天天av天天翘天天综合网色鬼国产| 5月丁香婷婷综合| 国产激情精品久久久第一区二区 | 国产成人午夜高潮毛片| 亚洲国产成人自拍| 欧美午夜精品免费| 激情文学综合插| 最新欧美精品一区二区三区| 在线视频一区二区三| 蜜桃av一区二区在线观看| 国产精品三级电影| 欧美精品在线视频| 国产精品一级片在线观看| 一区二区三区中文在线| 精品国产乱码久久久久久1区2区| 一本大道综合伊人精品热热| 久久97超碰色| 精品国产乱码久久久久久夜甘婷婷 | 欧美日韩夫妻久久| 波多野结衣亚洲| 久久99久久99精品免视看婷婷 | 欧美日韩在线播放| 成人免费观看视频| 免费国产亚洲视频| 一区二区三区国产精品| 久久色.com| 欧美一区二区三区四区视频| 91香蕉视频在线| 国产乱码精品1区2区3区| 亚洲国产aⅴ天堂久久| 国产精品成人免费| 久久精品视频在线看| 欧美一级二级三级蜜桃| 欧美影院一区二区| 97久久精品人人澡人人爽| 国产福利电影一区二区三区| 美脚の诱脚舐め脚责91| 夜夜嗨av一区二区三区网页 |