我了解代码分析错误,但是感觉为什么在此代码上发生错误很奇怪:
public bool IsCurrentLicenseValid()
{
int licenseStatusCode = 0;
try
{
int licenseStatusCode = this.GetLicenseStatus();
if (licenseStatusCode > 0)
{
return true;
}
return false;
}
catch (NalpeironException)
// catch (NalpeironException ex), but now: the variable ex is declared but never used
{
DiagnosticsService.Instance.Trace(
TraceFilters.Services,
"NalpeironLicensingService.IsCurrentLicenseValid",
$"License status indicates error '{licenseStatusCode}'");
// the error goes away if I use ex in the message (i.e. ex.Message)
return false;
}
}
我在catch语句中捕获了特定异常,我只是不想使用异常消息或其他异常属性。是这里唯一的抑制此消息的解决方案吗?还是应该使用某些异常属性或方法?
NalpeironException扩展了Exception,这是代码:
public class NalpeironException : Exception
{
private Enum errorId;
public NalpeironException(Enum errorId, string message, Exception inner) : base(message, inner)
{
this.errorId = errorId;
}
public Enum ErrorId
{
get { return this.errorId; }
set { this.errorId = value; }
}
public bool IsEqualId(Enum errorId)
{
return this.ErrorId.GetType() == errorId.GetType() && this.ErrorId.Equals(errorId);
}
}
更新
正确的方法是在诊断服务中使用NalpeironException消息。为了文字记录异常信息。恐怕我做不到,因为该代码已经由其他人编写,并且该应用程序已经发货。
答案 0 :(得分:0)
我认为您的代码没有任何意义,只是使用一种更具体的异常类型,而不是创建自己的异常类型(NalpeironException
),因为您必须分析代码并提取可以由代码引起的,最好使用.Net中已经存在的异常(System.Exception
)类型。
您仅需要将自己的异常类型用于更具体的需求(业务逻辑,业务规则,异常管理...。)
查看下面的链接可能会有所帮助: https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/using-standard-exception-types