Try/Catch - "代码风格"问题

Roe*_*rel 2 c# coding-style try-catch

一般来说,我想创建一个代码,使一个调用成为一个类的执行函数,可能会抛出异常.我的问题是我应该设置类,我应该在try/catch或out方面从中提取值吗?

选项A:

neededValue V;

try
{
    MyClass C = new MyClass();
    C.SomeParam = XXX;
    C.Execute();
    V = C.SomeParam2;
}
catch
{
    //Clean up...
    //Log...
    //Throw new exception
}
Run Code Online (Sandbox Code Playgroud)

选项B:

neededValue V;
MyClass C = new MyClass();
C.SomeParam = XXX;

try
{
    C.Execute();
}
catch
{
    //Clean up...
    //Log...
    //Throw new exception
}

V = C.SomeParam2;
Run Code Online (Sandbox Code Playgroud)

我知道两者都会奏效,但哪个更好更容易阅读?

Dav*_*ras 11

嘿那些不是同一个东西,在第一种情况下V = C.SomeParam2;永远不会在异常的情况下执行,而在第二种情况下它将永远执行.

更重要的是,你的catch块使用的例子是非常错误的,总是将异常对象放在catch之后,并使用日志记录框架记录已经发生的事情,然后如果可以的话,做出反应并处理异常,并且只有在它有意义的情况下,或抛出它或根本不捕获它,你的调用代码将捕获它.