首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >try-catch块

try-catch块
EN

Stack Overflow用户
提问于 2011-05-11 19:48:36
回答 7查看 3.3K关注 0票数 5

我有一个类,用不同的方法读取文件,做同样的事情。我想使用try-catch块来处理异常。我想问一下,是否有任何方法可以让所有方法都进入一个try块中,因为每个方法都会给出相同的异常"file not found“。

EN

回答 7

Stack Overflow用户

发布于 2011-05-11 19:53:23

我更喜欢的处理方式是从它们中调用一个公共方法,这样每个(单独的)看起来就像:

代码语言:javascript
复制
try {
   // code
} catch(SomeExceptionType ex) {
   DoSomethingAboutThat(ex);
}

然而,你也可以用委托来做这件事。

代码语言:javascript
复制
void Execute(Action action) {
    try {
       // code
    } catch(SomeExceptionType ex) {
       // do something
    }
}

代码语言:javascript
复制
Execute(() => {open file});
票数 3
EN

Stack Overflow用户

发布于 2011-05-11 19:58:21

您可以使用此技术通过扩展方法对操作进行包装

代码语言:javascript
复制
public static class ActionExtensions
{
    public static Action WrapWithMyCustomHandling(this Action action)
    {
        return () =>
                {
                    try
                    {
                        action();
                    }
                    catch (Exception exception)
                    {

                        // do what you need 
                    }
                };
    }
}

public class DummyClass
{
    public void DummyMethod()
    {
        throw new Exception();
    }
}

然后调用它,如下所示:

代码语言:javascript
复制
DummyClass dummyClass = new DummyClass();
Action a = () => dummyClass.DummyMethod();
a.WrapWithMyCustomHandling()();

所以基本上你可以用包装任何动作。

票数 3
EN

Stack Overflow用户

发布于 2011-05-11 19:51:51

如果我理解这个问题,你不能有一个单独的try catch块,但你可以从catch调用一个方法,这样所有的方法都将共享相同的异常处理:

代码语言:javascript
复制
try
{
    .... your code
}
catch (SomeException e)
{
    ExceptionHandler(e);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5963722

复制
相关文章

相似问题

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