我有一个调用逻辑代码的Ria服务。我想在每个逻辑函数中编写try catch块,以提供处理未处理异常的方法。
try
{
//something
}
catch(BussinessException e)
{
//save e.info to database
}但是我不想在我的逻辑中到处写这个块代码,我也不想把异常处理放在RIA服务中,因为另一种类型的服务也调用逻辑。
有没有人能给我一个一站式的异常处理解决方案?
发布于 2010-10-05 10:24:56
根据你的历史,我很确定这是C#,所以这是我的观点。
避免重复的最好方法是像这样包装你的逻辑。
private static void ExecuteLogic(Action action)
{
try
{
action();
}
catch(BussinessException e)
{
//save e.info to database
}
}有了它,您就可以轻松地执行共享相同错误处理的各种操作。
ExecuteLogic(
() =>
{
// Do something...
}
);发布于 2010-10-05 10:33:15
如果你只想记录异常,就像我从你的例子中看到的,你可以订阅AppDomain.FirstChanceException。但你不会处理好的。噢。顺便说一下,此事件仅在.NET 4中引入:(。
发布于 2010-10-05 10:43:35
这是一个使用命令模式的更传统的面向对象的解决方案。
public interface ICommand {
void Execute();
}
public class BankAccountWebServiceCall: ICommand(){
string name;
int accountNo;
public BankAccountWebServiceCall(string name, int accountNo) {
this.name= param1;
this.accountNo= accountNo;
}
//ICommand implementation
public void Execute() {
SomeWebService.Call(name, accountNo);
}
}
public class WebServiceCaller {
public void CallService(ICommand command) {
try {
command.Execute();
} catch (SomeBusinessException ex) {
//handle exception
}
}
}
public class WebServiceCallerTest {
public static void CallServiceTest() {
new WebServerCaller().CallService(new TwoParameterwebServiceCall("Igor", 12345));
}
}https://stackoverflow.com/questions/3860433
复制相似问题