处理此异常情况的最佳做法

Ben*_*nny 0 c# exception-handling

假设methodA和methodB都会抛出几种类型的异常,而有些异常属于同一类型,有些则不是,那么处理这种情况的最佳做法是什么?

风格A:

void foo()
    {
        try
        {
            methodA();
        }
        catch (exceptionTypeA)
        {
            handleA;
        }

        try
        {
            methodB();
        }
        catch (exceptionB)
        {
            handleB;
        }
    }
Run Code Online (Sandbox Code Playgroud)

风格B:

void foo()
    {
        try
        {
            methodA();
            methodB();
        }
        catch (exceptionTypeA)
        {
            handleA;
        }
        catch (exceptionB)
        {
            handleB;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Ada*_*son 11

两者都不"更好"; 他们只是不同.根据您在catchmethodB中执行的操作,即使methodA抛出类型异常,第一个选项也允许执行exceptionTypeA,而第二个块要求methodA成功才能methodB被调用.