在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

dotnet中的出錯處理

dotnet中的出錯處理

更新時間:2022-05-01 文章作者:未知 信息來源:網絡 閱讀次數:

近日給老美做外包項目,被老美逼出來了一套關于錯誤處理的方法,在此不敢藏拙,奉獻出來給大家批判。

首先,屏蔽程序中所有的自動錯誤處理,千萬不要出來:“
System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: 服務器無法處理請求。”等錯誤頁面,而應該是一些簡單易懂的東西,俺在此使用的是Duwamish 7.0里的錯誤處理頁面:
<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>
當然,要做到這一點也很簡單,可以在web.config里這樣配置(假如你的錯誤頁面叫Error.aspx):
<customErrors
defaultRedirect = "Error.aspx"
mode="On"
/>
這個配置你可以給據你的需要修改(比如mode的值)。


其次,要把錯誤信息寫到日志中去。
我們定義錯誤日志信息的結構如下
public struct ErrorLogItem
{
public string User ;//當前登錄人
public string AppName ;//應用程序名稱
public string ClassName ;//錯誤發生的類名稱
public string FunctionName ;//錯誤發生的方法(事件)名稱
public string Position ;//錯誤的位置(或其它信息)
public string ErrorInfo ;//錯誤信息
public DateTime OccurTime ;//錯誤發生的時間
}

錯誤日志類如下所示:
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

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

再次,我們還要把錯誤信息自動發到我們的信箱中(這一點很重要--至少對我這個項目來說,我不能跑到美國去調試,也不能老是讓老外告訴我發生了什么錯誤)
發送郵件的方法如下:
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 ;
}
意思大家應該明白,里面具體的一些方法調用大家可以寫自己的代碼來代替。
當然,郵箱地址也是可以配置的:
<appSettings>
<add key="errorlogemail" value="zl3624@china.com" />
</appSettings>
取出方法:
public static string ErrorLogEmail
{
get
{
return ConfigurationSettings.AppSettings["errorlogemail"].Trim() ;
}
}
最后,是用一個方法來調用寫日志和發郵件的方法:
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 ;
}
}

呵呵,這樣錯誤處理應該差不多了吧?

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 不要播放器的av网站| 97超碰成人在线| 中文字幕国产传媒| 国产乱子夫妻xx黑人xyx真爽| 午夜啪啪小视频| youjizzxxxx18| 精品久久久久久中文字幕2017| 蜜桃网站在线观看| 麻豆md0077饥渴少妇| 91免费网站视频| 最近中文字幕免费mv| 亚洲a级黄色片| 日本高清一区二区视频| 亚洲网中文字幕| 国产1区2区3区中文字幕| 男女激烈动态图| 鲁一鲁一鲁一鲁一澡| 欧美日韩一区二区在线免费观看| 99福利在线观看| 一区二区三区视频网| 异国色恋浪漫潭| 男人添女人下部高潮视频在观看| 亚洲熟妇国产熟妇肥婆| av天堂永久资源网| 福利视频999| 免费毛片网站在线观看| 亚欧在线免费观看| 日韩人妻一区二区三区蜜桃视频| 久久亚洲精品无码va白人极品| 黄色一级片播放| 视频一区二区视频| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 岛国毛片在线播放| 国产在线播放观看| 在线播放免费视频| www.浪潮av.com| 先锋影音男人资源| 国产超级av在线| 六月婷婷激情网| 国产一区视频免费观看| 一区二区三区四区免费观看| 少妇高潮喷水久久久久久久久久| 在线观看免费视频高清游戏推荐| 极品粉嫩国产18尤物| 久热精品在线播放| 国产一区二区片| 97超碰免费观看| 亚洲福利精品视频| 午夜肉伦伦影院| 黄色大片在线免费看| 色乱码一区二区三区熟女| 免费大片在线观看| 搞av.com| 青草网在线观看| 日韩国产精品毛片| 亚洲国产欧美91| 自拍偷拍一区二区三区四区| 能在线观看的av网站| 日韩伦理在线免费观看| 日本熟妇人妻xxxx| 成人av在线播放观看| 18视频在线观看娇喘| 天天做天天爱天天高潮| www.桃色.com| 日本高清久久久| 99九九99九九九99九他书对| 999精彩视频| 中文字幕在线观看日| jizz欧美性11| theporn国产精品| www.51色.com| 久久av喷吹av高潮av| 一本色道久久88亚洲精品综合| 超碰91在线播放| wwwwww欧美| 欧美牲交a欧美牲交aⅴ免费下载| 久激情内射婷内射蜜桃| 少妇高潮喷水久久久久久久久久| 激情五月开心婷婷| 91国产精品视频在线观看| 亚洲精品20p| 午夜福利123| 精品国产av无码一区二区三区| 欧美成人高潮一二区在线看| 黄网站欧美内射| 亚洲欧美在线精品| 成年人黄色在线观看| 久艹在线免费观看| 无码人妻精品一区二区三区66| 色噜噜狠狠一区二区| 国产美女作爱全过程免费视频| a级黄色一级片| 欧美女同在线观看| 男人天堂a在线| 精品日韩久久久| 国产爆乳无码一区二区麻豆| 亚洲五月天综合| 欧美 国产 精品| 九色porny91| a级免费在线观看| 日韩爱爱小视频| 国产一线二线三线女| 福利视频999| 国产精品宾馆在线精品酒店| 国产aⅴ爽av久久久久| 国产精品国产亚洲精品看不卡| 高清一区在线观看| 浮妇高潮喷白浆视频| 99re6在线观看| 欧美日韩中文在线视频| www.国产二区| 免费黄频在线观看| 亚洲综合在线网站| 国产玉足脚交久久欧美| 91插插插影院| 亚洲久久中文字幕| 精品久久久久久久免费人妻| 免费网站在线观看视频| 91香蕉国产线在线观看| 免费看a级黄色片| 国产午夜伦鲁鲁| aa在线观看视频| 欧美乱大交xxxxx潮喷l头像| 99精品视频国产| 污污网站在线观看视频| 欧美黑人又粗又大又爽免费| 欧美牲交a欧美牲交aⅴ免费真 | 国产亚洲精品网站| 欧美人成在线观看| www.激情网| 国产精品无码电影在线观看| eeuss中文| 九一免费在线观看| 国产女人18毛片| 午夜在线视频免费观看| 四虎永久免费网站| 欧美性受黑人性爽| 奇米777四色影视在线看| 无码人妻精品一区二区三区99v| 一区中文字幕在线观看| 亚洲一区二区图片| 中国女人做爰视频| 国产女主播自拍| 国产亚洲欧美在线视频| www.国产区| 91国内在线播放| 91在线第一页| 久久国产精品视频在线观看| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 国内外成人免费激情视频| 精品免费国产一区二区| 九九九九九九九九| 欧美a级免费视频| 久久精品香蕉视频| 91精品999| 日韩精品在线观看av| 日本在线观看a| 午夜大片在线观看| 91亚洲精品国产| 一区二区三区 日韩| 伊人网在线免费| 国产熟人av一二三区| 黄瓜视频免费观看在线观看www| 人人妻人人做人人爽| 天天干天天av| 五十路熟女丰满大屁股| 拔插拔插华人永久免费| 成 年 人 黄 色 大 片大 全| 一本久道中文无码字幕av| 国产一级片91| 亚洲77777| 国产91在线免费| 国产精品无码电影在线观看| 欧美精品aaaa| 欧美啪啪免费视频| 中文字幕の友人北条麻妃| 无码人妻精品一区二区三区66| www.18av.com| 国产探花在线观看视频| 国产天堂在线播放| 成人在线观看你懂的| 91看片淫黄大片91| av亚洲天堂网| 国产91色在线观看| 女人另类性混交zo| 久久国产精品视频在线观看| 九九久久九九久久| 国内精品国产三级国产aⅴ久| 国产三级三级三级看三级| 分分操这里只有精品| 欧美 另类 交| 青娱乐精品在线| 高潮一区二区三区| 日本在线观看免费视频| 亚洲男人天堂色| 国产又黄又大又粗视频| 国产一区二区三区精彩视频| 97av视频在线观看| 国产1区2区在线| 久久久久久久久久久久久国产精品 |