首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理未处理的异常

处理未处理的异常
EN

Stack Overflow用户
提问于 2010-10-05 10:15:10
回答 4查看 438关注 0票数 1

我有一个调用逻辑代码的Ria服务。我想在每个逻辑函数中编写try catch块,以提供处理未处理异常的方法。

代码语言:javascript
复制
try
{
//something
}
catch(BussinessException e)
{
//save e.info to database
}

但是我不想在我的逻辑中到处写这个块代码,我也不想把异常处理放在RIA服务中,因为另一种类型的服务也调用逻辑。

有没有人能给我一个一站式的异常处理解决方案?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-05 10:24:56

根据你的历史,我很确定这是C#,所以这是我的观点。

避免重复的最好方法是像这样包装你的逻辑。

代码语言:javascript
复制
private static void ExecuteLogic(Action action)
{
    try
    {
        action();
    }
    catch(BussinessException e)
    {
        //save e.info to database
    }
}

有了它,您就可以轻松地执行共享相同错误处理的各种操作。

代码语言:javascript
复制
ExecuteLogic(
    () =>
    {
        // Do something...
    }
);
票数 2
EN

Stack Overflow用户

发布于 2010-10-05 10:33:15

如果你只想记录异常,就像我从你的例子中看到的,你可以订阅AppDomain.FirstChanceException。但你不会处理好的。噢。顺便说一下,此事件仅在.NET 4中引入:(。

票数 0
EN

Stack Overflow用户

发布于 2010-10-05 10:43:35

这是一个使用命令模式的更传统的面向对象的解决方案。

代码语言:javascript
复制
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));
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3860433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档