[英]Exception File Handling in a better way
我有这个代码保存到文件。
string filePath = Path.Combine(Path.GetTempPath(), "ConnectFour.txt");
try
{
using (StreamWriter myFile = File.CreateText(filePath))
{
// saving code
}
}catch (IOException){
MessageBox.Show("There was an error saving this game!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
} catch (Exception){
MessageBox.Show("There was an error saving this game!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
}
使用文件处理时是否有更好的方法来处理异常? 可能会捕获更多特定的异常,如FileNotFound? 您有什么推荐的吗? 我问这个,因为当我在另一台计算机上使用我的应用程序的可执行文件时,我收到了消息框(异常被捕获),我不知道它是什么! 此异常没有显示在我拥有此应用程序的每台计算机上,因此更难以弄清楚!
为什么不使用抛出的异常并显示消息:
}
catch( IOException e )
{
MessageBox.Show("There was an error saving this game: " + e.Message
, "ERROR"
, MessageBoxButtons.OK
, MessageBoxIcon.Exclamation
, MessageBoxDefaultButton.Button1);
}
如果文件必须在您的操作之前存在,您可以执行File.Exists( file )
。 错误检查始终优先于异常处理...
作为一般规则,您通常不应该捕获每个异常(通过编写catch(Exception)
),但只能catch(Exception)
那些您可以在此特定点处理的catch(Exception)
。
查看文档,了解保存代码中使用的所有方法可以抛出哪些异常。 想想在特定算法的情况下它们的真正含义以及如何将异常转换为用户友好的错误消息。
例如,UnauthorizedAccessException和FileNotFoundException是非常不同的东西。 如果你只是写“发生错误”,用户就不明白什么是错的。
考虑记录异常以获取有用的调试信息。
你可以这样做:
try{}
catch(exception ex){
if(ex is IOException){
messagebox.show("Your Specific Message");
//and do others like this
}
}
基于异常的工作流管理是建议的指南,如果不是唯一可行的,在处理IO
操作的情况下,也是文件。 通常没有其他方法来处理您的程序工作流,如果不是在处理IO工件时通过预期的异常处理。
在你的情况下,我会在所有预期的异常上添加catch
,而对于其他人,只会留下去堆栈。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.