WCF下抛出FaultException异常让客户的捕获的问题?
在做一个项目,我负责用Nhibernate写DAL层服务并用WCF+IIS方式对外发布
对于异常的处理WEB端同事说我这边只有抛出FaultException他们才能捕获到。
所以我现在的代码结构改为如下方式:
using (ISession session = SessionFactory.OpenSession())
{
using (ITransaction tx = session.BeginTransaction())
{
try
{
...//代码块
tx.Commit();
}
Catch(FaultException<ErrorInfo> fex) //ErrorInfo是一个自定义的错误类
{
tx.Rollback();
throw fex;
}
Catch(Exception ex)
{
tx.Rollback();
throw ex;
}
}
}
现在我有几个想不通的问题:
1.我有两个异常Catch,是不是只有我在TRY代码块里面主动抛出FaultException<ErrorInfo>,才能执行Catch(FaultException<ErrorInfo>
fex)的代码?否则任何异常都是到Catch(Exception ex)里面去执行?
2.CATCH的作用是为了在异常发生后回滚此次事务操作,可以看到我写了一句tx.Rollback();,但之后我又为了让客户端知道方法执行失败,
所以又抛出了异常,因为网上很多关于异常处理的都建议不要在异常里面再抛出异常,那有没有比这更好的代码写法?
3.既然是客户端只接收FaultException异常,那如果执行到Catch(Exception ex),是不是我需要在里面抛一个FaultException<ErrorInfo>
才行啊?
哔哔one
九州编程