自定义异常并抛出c#

本文关键字:自定义异常 | 更新日期: 2023-09-27 18:27:35

我有以下代码:

    public DataTable executeQuery(string querySql, List<MySqlParameter> parameters)
    {
        try
        {
            using (connectionLocal = getConnection())
            {
                connectionLocal.Open();
                MySqlCommand command = new MySqlCommand(querySql, connectionLocal);
                command.CommandType = System.Data.CommandType.Text;
                foreach (MySqlParameter param in parameters)
                {
                    command.Parameters.Add(param);
                }
                MySqlDataAdapter dataAdapter = new MySqlDataAdapter(command);
                DataTable dataTable = new DataTable();
                dataAdapter.Fill(dataTable);
                dataTable.TableName = "tabla";
                return dataTable;
            }
        }
        catch (Exception e)
        {
            throw new DAOException("tst",e);
            //return null;
        }
    }

而且。。。

public class DAOException : Exception
{
    public DAOException(String msg, Exception inner)
        : base(msg, inner)
    {
        MessageBox.Show("Ocurrio un problema... Por favor contacta al administrador!"); return;
    }
}

但当异常发生时,会出现以下情况:

http://s17.postimg.org/6quh6xs6n/daoex.png

我想知道用尝试接球投球的正确方法是什么。

谢谢!!!

自定义异常并抛出c#

处理异常的位置是catch块,而不是异常类本身。因此,您可以在catch块中显示MessageBox并终止应用程序(例如,通过Application.Exit())。

Exception类不过是一个数据容器,可以获取有关所发生错误的信息。通过抛出异常,你会说"我无法处理这种情况,其他人(调用者)应该处理!"然后你使用Exception类来提供有关发生了什么以及在哪里发生的信息。

可以(或希望)处理此异常的代码实现try....catch块。它捕获异常,并记录MessageStackTrace等信息。

如果任何人都没有捕捉到异常,它最终将导致整个应用程序崩溃,操作系统将通过创建转储等来处理。

在catch块中,您捕获了之前抛出的Exception,然后抛出了一个新的DAOException,您在任何地方都不处理它。

你到底想做什么?

如果您只想记录错误消息或将其显示给用户,您可以通过MessageBox调用修改捕获块:

catch (Exception e)
{
    MessageBox.Show("Ocurrio un problema... Por favor contacta al administrador!");
    return null; // or Application.Exit(); or other code you want
}

有一个关于异常抛出设计和缓存的指导原则。请记住,抛出异常后,内存和当前上下文中的数据可能会损坏。然后您必须处理这种情况或终止应用程序。

有很多关于异常处理的材料,它实际上不仅仅是一个答案的主题。例如,最好至少向用户显示异常消息,或者将异常详细信息记录到日志文件中,以便将来进行调试。