自定义异常并抛出c#
我有以下代码:自定义异常并抛出c#,c#,exception,try-catch,C#,Exception,Try Catch,我有以下代码: public DataTable executeQuery(string querySql, List<MySqlParameter> parameters) { try { using (connectionLocal = getConnection()) { connectionLocal.Open();
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;
}
}
但发生异常时,会出现以下情况:
我想知道什么是正确的方式使用尝试捕捉扔
谢谢你 在catch块中,您捕获先前抛出的异常,然后抛出一个新的DAOException,您不在任何地方处理它
您到底想做什么?如果您只想记录错误消息或将其显示给用户,您可以修改catch block by MessageBox调用:
catch (Exception e)
{
MessageBox.Show("Ocurrio un problema... Por favor contacta al administrador!");
return null; // or Application.Exit(); or other code you want
}
有一个关于抛出设计和缓存的异常。请记住,引发异常后,内存中的数据和当前上下文可能会损坏。然后您必须处理此场景或终止应用程序
有很多关于这个主题的材料,它实际上更像是一个答案。例如,最好至少向用户显示异常消息,或将异常详细信息记录到日志文件中,以便将来进行调试 处理异常的位置是catch
块,而不是异常类本身。因此,您可以在catch块中显示MessageBox并终止应用程序(例如,通过application.Exit()
)
异常
类只不过是一个数据容器,它可以获取有关所发生错误的信息。通过抛出异常,您可以说“我不能处理这种情况,其他人(调用方)应该处理它!”并且您可以使用异常
类提供有关发生了什么以及发生在哪里的信息
能够(或想要)处理此异常的代码实现了try….catch
块。它捕获异常,并(例如)记录信息,如Message
和StackTrace
如果任何人都没有捕获到异常,它最终将使整个应用程序崩溃,操作系统将通过创建转储等来处理。inspect
e.Message
和e.InnerException
@Shyju Where?在DAOException?中,我想显示一条错误消息并停止程序执行。我怎么能在DAOException类中尝试这个呢?我个人认为你并不需要自己的异常类,在catch块中,你只需要显示一个MessageBox并退出你的程序。当然,您也可以使用自己的异常类来执行此操作,然后您需要处理抛出的CustomException,以便能够显示您自己的MessageBox,而不是.NET的MessageBox。(发生未处理的异常后,.NET将显示一条错误消息,您无法控制该消息,因此您还需要处理CustomException。)谢谢您的回答。如何处理DAOException类中的异常以避免未处理的异常?您不应该处理异常本身,因为它没有任何意义。当您的代码可能导致“自定义”错误时,需要自定义异常,在.NET框架中没有异常,而不是当您想要处理一个已被.NET阻止的异常时(如与MySql相关的异常)。在您的情况下,您只需要在catch块中处理抛出的异常,例如显示MessageBox并关闭应用程序。不需要自定义异常。
catch (Exception e)
{
MessageBox.Show("Ocurrio un problema... Por favor contacta al administrador!");
return null; // or Application.Exit(); or other code you want
}