C# 如果(){try{}catch{},哪种布局方式更好?

C# 如果(){try{}catch{},哪种布局方式更好?,c#,mysql,if-statement,try-catch,C#,Mysql,If Statement,Try Catch,我有一个布局,当我尝试对MySQL进行特定类型的查询时(插入、更新或选择) 但是我想知道这样是否更好 Method() { Connect(); try { if ( i == 1) { // Query Db... } else if (i == 2) { // Query Db... } } catch { }

我有一个布局,当我尝试对MySQL进行特定类型的查询时(插入、更新或选择)

但是我想知道这样是否更好

Method()
{
    Connect();
    try
    {
        if ( i == 1)
        {
            // Query Db...
        }
        else if (i == 2)
        {
            // Query Db...
        }
    }
    catch { }
    finally
    {
        // Close Connection
    }
}

这两者之间有什么真正的区别或好处吗?

第二个更好,因为您有
if
/
else if
语句,只执行其中一个,并且可能引发异常。因此,将语句放入
try/catch
更符合逻辑。在这种情况下,我看不到将第一个版本比第二个版本使用的任何优势。您的第二个代码段执行相同的工作,代码更少


但是,如果要处理每个语句上的不同异常,则必须使用不同的
try
/
catch
语句。

第二种方法更好


如果要使用多个
If/else If
,最好隔离方法中
//Query db
部分的代码,这样就不必重复代码。然后,您可以向查询传递此方法的参数。

您的查询会引发什么类型的异常?@SimonWhitehead just
MySqlException
。我的意思是。。。为什么需要捕获异常?也许处理异常的根本原因是清理代码的开始。目前这个应用程序仍处于早期开发阶段,所以我仍在了解可能发生的异常。现在我想继续使用
try/catch
,但我确实希望以后否定它们。提示:通常在中建立数据库连接,以便在语句结束时将其关闭。由于这些方法纯粹用于查询数据库,是否有可能我必须处理多个异常?@Ben yes,请参阅您正在使用的方法的文档。通常大多数方法会引发多个异常,请参阅文档中的异常列表。但当然,在您的情况下,其他可能的异常可能与DB无关。。。
Method()
{
    Connect();
    try
    {
        if ( i == 1)
        {
            // Query Db...
        }
        else if (i == 2)
        {
            // Query Db...
        }
    }
    catch { }
    finally
    {
        // Close Connection
    }
}