【发布时间】:2016-03-06 15:22:06
【问题描述】:
我有这段代码试图将一些信息保存到文件中
try
{
foreach (var str in strlist)
{
var jsonData = str;
File.WriteAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory)+"test\"+".json",jsonData.ToString());
savedFiles++;
}
}
catch (Exception exception)
{
_log.ErrorFormat("Exception occurred in Saving JsonDocs , exception Message {0}", exception.Message);
return savedFiles;
}
当我签入这段代码时,我的 SONAR 开始抱怨我应该捕获特定异常。
但我这里唯一的逻辑是 文件 保存,它可以有以下所有可能的例外情况
那么如果一个 File 操作可以抛出 8 种类型的异常,我该如何捕捉特定的异常呢?这是否意味着我必须编写多个 catch 块?
【问题讨论】:
-
首先弄清楚category每个可能的异常在什么位置。例如,
ArgumentException- 你不应该抓住一个,因为你不应该将错误的参数传递给函数第一名。 -
都派生自 SystemException。如果你抓住它怎么办?如果没问题,您也应该在日志文件中包含异常的类型,使用 exception.GetType()。我还观察到您只保留已保存文件的计数,而不是每个文件的状态。您应该真正考虑跟踪每个文件的保存操作状态,而不仅仅是成功保存的计数。
标签: c# .net exception-handling sonarqube