我需要捕获一个泛型异常,然后根据特定类型进行分类,以减少代码行数,因为所有异常都做同样的事情。
下面的内容
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!
就完整的解决方案而言,它应该与您现有的代码一起工作。