针对特定异常类型的异常处理



我需要捕获一个泛型异常,然后根据特定类型进行分类,以减少代码行数,因为所有异常都做同样的事情。

下面的内容

catch (Exception ex)
{
Type ExceptionType = ex.GetType();
switch (ExceptionType.ToString())
{

case "IOException":
case "NullReferenceException":
system.WriteLine((ExceptionType)ex.Message);
break;
}

这显示错误没有类型异常类型。是否有可能尝试这种方法并完成此任务,或者需要采用典型的if else方法。请帮助

理想情况下,您应该像这样单独处理每个异常:

try
{

}
catch (IOException ex)
{
// Log specific IO Exception
}
catch (NullReferenceException ex)
{
// Log Specific Null Reference Exception
}
catch (Exception ex)
{
// Catch everything else
}

你可以这样做:

string exceptionErrorMessage;

try
{

}
catch (IOException ex)
{
// Log specific IO Exception
exceptionErrorMessage = ex.Message;
}
catch (NullReferenceException ex)
{
// Log Specific NullReferenceException
exceptionErrorMessage = ex.Message;
}
catch (Exception ex)
{
// Catch everything else
exceptionErrorMessage = ex.Message;
}

if (!string.IsNullOrEmpty(exceptionErrorMessage))
{
// use your logger to log exception.
Console.WriteLine(exceptionErrorMessage);
}

下面是使用相同方法的正确的OPs代码:

try
{
}
catch (Exception e)
{
var exType = e.GetType().Name;
switch (exType)
{
case "IOException":
case "NullReferenceException":
Console.WriteLine(e.Message);
break;
}
}

听起来您可能正在寻找ex.GetType().Name!

就完整的解决方案而言,它应该与您现有的代码一起工作。

相关内容

  • 没有找到相关文章

最新更新