1

从最佳实践的角度来看,try / catch在实现对象的方法时应该使用语句,还是可以将它们编码到方法本身中?

例如,我打算用 C# 编写一个数据库类。当我调用我的runCommand()方法时,做这样的事情是否被认为是最佳实践?

 //inside class method 'runCommand()'
 try
 {
     _command = new MySqlCommand(query, _connection);
     return _command;
 }
 catch (MySqlException e)
 {
     System.Windows.Forms.MessageBox.Show(e.ToString());
     return _command;
 }

...或类似的东西?

//inside a Windows form and assuming an object 'myDB'
private void btnRunCommand_Click(object sender, EventArgs e) {

    try {
        myDB.runCommand("SELECT * FROM test");
    }
    catch (MySqlException e) {
        MessageBox.Show(e.ToString());
    }
4

2 回答 2

2

这取决于您的异常处理的目标。

如果目标是在出现错误时显示错误消息,例如您的示例,则异常处理属于视图(Windows 窗体)。当需要用户交互来解决问题时,这很有帮助。

但是,如果您的数据模型应该返回一些默认值,或者尝试通过从远程服务器加载新数据来从异常中恢复,例如,此逻辑不属于视图。

于 2013-10-29T15:22:01.530 回答
0

数据访问代码通常不应直接与用户交互。如果在数据访问方法中可能需要用户交互,调用者应提供一个或多个可用于请求此类交互的委托。这样,调用数据访问代码的用户界面代码可以定义方法以与 UI 的其余部分一致的方式执行用户交互,并将这些方法传递给数据访问代码。

于 2013-10-29T21:26:08.380 回答