lin*_*ini 0 c# exception xml-serialization richtextbox winforms
我正在对一个xml文件进行去序列化,我正在尝试使用下面的代码捕获所有异常艺术,但它只捕获一个异常.我在这做什么错?
码:
StringBuilder exBuilder;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
var fileName = openFileDialog1.FileName;
mruOpenRseConfig.AddRecentFile(fileName);
try
{
ConfigDeserialized = MyConfig.DeserializeFromXmlFile(fileName);
}
catch (Exception ex)
{
if (ex is DataConsistencyException ||
ex is XmlException)
{
exBuilder.Clear();
exBuilder.Append(ex.Message + Environment.NewLine);
RichTextBox richTextBox = new RichTextBox();
richTextBox.Text = exBuilder;
richTextBox.Dock = DockStyle.Fill;
Form richMessageBox = new Form
{
StartPosition = FormStartPosition.CenterScreen,
ControlBox = true,
Text = "Error in File",
MaximizeBox = false,
MinimizeBox = false
};
richMessageBox.Controls.Add(richTextBox);
richMessageBox.ShowDialog();
return;
}
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
代码只会抛出一个异常,因此您无法捕获多个异常.
例如:
try
{
throw new NotSupportedException();
throw new InvalidOperationException();
}
catch (Exception ex)
{
//ex will always be NotSupportedException and never InvalidOperationException.
}
Run Code Online (Sandbox Code Playgroud)
您无法使反序列化程序处理一个例外,然后继续 - 除非它是您自己的 - 在这种情况下,您必须在每个发生时捕获它们,记录它们然后再查看它们,或者如果您想要反应则为每个事件引发事件对他们来说,他们发生了.
异常用于打破程序的流程,因此当抛出一个程序时,它将停止正在执行的操作并中断所有其他执行,直到处理完毕.因此,一旦抛出第一个异常,反序列化器就会停止运行并中止.
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |