我有一个由C#.NET 4.0开发的两层Windows窗体应用程序。在此APP中,我读取文件内容并在Data-Access-Layer中创建实体列表,并将其返回到GUI层以在网格视图中显示。在我当前的逻辑中,如果文件中的一行已损坏或格式错误(我无法从中创建实体)或任何其他异常,我抛出异常并中止该过程。现在,我如何实现忽略/重试/取消模式?我的意思是什么是显示忽略/重试/取消对话框并执行任何用户想要的最佳方式(例如,忽略当前行并转到下一行,取消该过程,或重试当前失败的行读取)?它有什么模式吗?
答案 0 :(得分:10)
在提供此类选项时,我采用以下模式:
DialogResult result = DialogResult.Retry;
while (result == DialogResult.Retry) {
try {
DoProcess();
break;
}
catch {
result = MessageBox.Show(errorMessage, caption, MessageBoxButtons.AbortRetryIgnore);
if (result == DialogResult.Abort) throw;
}
}
如果用户选择“重试”,则循环将再次运行。如果用户单击Abort,则将抛出异常(在链中进一步捕获,从而中止其余操作)。忽略将导致循环退出而不抛出异常。我想不出更简洁的方法。