关于异常处理

coolzhengtao 2011-07-07 11:50:06

public static User XmlToUser(string xml)
{
XmlDocument doc = new XmlDocument();
User user = new User();
try
{
doc.LoadXml(xml);
user.IDNo = (doc.SelectSingleNode("Request/IDNo").InnerText == null) ? "" : doc.SelectSingleNode("Request/IDNo").InnerText;
user.IDType = (doc.SelectSingleNode("Request/IDType").InnerText == null) ? "" : doc.SelectSingleNode("Request/IDType").InnerText; ;
user.MarrigeStatus = (doc.SelectSingleNode("Request/MarrigeStatus").InnerText == null) ? "" : doc.SelectSingleNode("Request/MarrigeStatus").InnerText;
user.Mobile = (doc.SelectSingleNode("Request/Mobile").InnerText == null) ? "" : doc.SelectSingleNode("Request/Mobile").InnerText;
user.Name = (doc.SelectSingleNode("Request/Name").InnerText == null) ? "" : doc.SelectSingleNode("Request/Name").InnerText;
user.Sex = (doc.SelectSingleNode("Request/Sex").InnerText == null) ? "" : doc.SelectSingleNode("Request/Sex").InnerText;
user.TelephoneNo = (doc.SelectSingleNode("Request/TelephoneNo").InnerText == null) ? "" : doc.SelectSingleNode("Request/TelephoneNo").InnerText;
user.Uid = (doc.SelectSingleNode("Request/Uid").InnerText == null) ? 0 : Convert.ToInt32(doc.SelectSingleNode("Request/Uid").InnerText);
user.Zip = (doc.SelectSingleNode("Request/Zip").InnerText == null) ? "" : doc.SelectSingleNode("Request/Zip").InnerText;
user.DOB = (doc.SelectSingleNode("Request/DOB").InnerText == null) ? DateTime.Now : DateTime.Parse(doc.SelectSingleNode("Request/DOB").InnerText);
user.CreateDate = (doc.SelectSingleNode("Request/CreateDate").InnerText == null) ? DateTime.Now : DateTime.Parse(doc.SelectSingleNode("Request/CreateDate").InnerText);
user.Address = (doc.SelectSingleNode("Request/Address").InnerText == null) ? "" : doc.SelectSingleNode("Request/Address").InnerText;
}
catch
{
throw;
}
return user;
}

本人写了这么个方法,本人用throw抛出异常,然后在WebService中调用这个方法,想在WebService中处理这个异常然后将异常信息写入日志,大家教教我怎么做,本人很菜,还有想写个异常类,来集中处理自己抛出的异常,问哈大家如何写这个异常类,在这里先祝各位工作顺利
...全文
80 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen_ya_ping 2011-07-07
  • 打赏
  • 举报
回复
catch(exception e)
{
log(e);
}
coxie007 2011-07-07
  • 打赏
  • 举报
回复
webservices中接收到异常信息,在catch中直接调用一个自定义方法,这个方法就是你记录异常的方法。
itliyi 2011-07-07
  • 打赏
  • 举报
回复
定义公共方法,日志地址,内容等参数,异常处理部分调用公共方法
子夜__ 2011-07-07
  • 打赏
  • 举报
回复
呵呵 你可以直接用log4net

web.config
<?xml version="1.0" encoding="utf-8" ?>  
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<logger name="logerror">
<level value="ERROR" />
<appender-ref ref="ErrorAppender" />
</logger>
<logger name="loginfo">
<level value="INFO" />
<appender-ref ref="InfoAppender" />
</logger>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log//LogError//" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="10240" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".htm"" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p
<BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log//LogInfo//" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".htm"" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=blue>%n日志时间:%d [%t] <BR>%n日志级别:%-5p
<BR>%n日 志 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
</log4net>
<system.web>
<compilation defaultLanguage="c#" debug="true" />
<customErrors mode="RemoteOnly" />
<authentication mode="Windows" />
<authorization>
<allow users="*" />
</authorization>
<trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false" timeout="20" />
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
</configuration>


操作类
using System;  
using System.IO;

namespace TankAction.SystemLog
{
/**//// <summary>
/// LogHelper的摘要说明。
/// </summary>
public class LogHelper
{
private SystemLog()
{
}

public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");

public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");

public static void SetConfig()
{
log4net.Config.DOMConfigurator.Configure();
}

public static void SetConfig(FileInfo configFile)
{
log4net.Config.DOMConfigurator.Configure(configFile);
}

public static void WriteLog(string info)
{
if(loginfo.IsInfoEnabled)
{
loginfo.Info(info);
}
}

public static void WriteLog(string info,Exception se)
{
if(logerror.IsErrorEnabled)
{
logerror.Error(info,se);
}
}
}
}


Global
protected void Application_Start(Object sender, EventArgs e)  
{
SystemLog.SetConfig();
}
protected void Application_Error(Object sender, EventArgs e)
{
Exception objExp = HttpContext.Current.Server.GetLastError();
LogHelper.WriteLog("/r/n客户机IP:"+ Request.UserHostAddress +"/r/n错误地址:"+ Request.Url +"/r/n异常信息:"+ Server.GetLastError().Message,objExp);
}
风之子1 2011-07-07
  • 打赏
  • 举报
回复
楼上的各位说的已经很清楚了

其实重点的就是公共类处理,把公共的异常类写好,在catch到异常的时候调用就可以了
truecoffeefox 2011-07-07
  • 打赏
  • 举报
回复
直接 throw了还catch他干嘛
ycproc 2011-07-07
  • 打赏
  • 举报
回复
给你看看我写的异常记录吧

异常信息还是认真的记录下来的好


catch (Exception ex)
{
Log.Write("\r\n----------------------------------------------------------------\r\n");
Log.Write("提交客户电子注册错误!" + DateTime.Now + "错误描述" + ex.ToString() + "\r\n");
Log.Write("----------------------------------------------------------------\r\n");
}
KenshinCui 2011-07-07
  • 打赏
  • 举报
回复
定义一个单利或者静态方法即可,还可以看一下这个:程序开发中异常的处理方式http://blog.csdn.net/jianxin160/article/details/5907251
Ayanamikula 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chen_ya_ping 的回复:]
catch(exception e)
{
log(e);
}
[/Quote]
+1
在catch块里调用自定义的方法

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧