我有一个非常基础的问题一直在思考。
请参考以下使用 try/catch 块的代码片段:
public void doSomething()
{
try
{
doSomethingElse()
}
catch (Exception ex)
{
if (ex is IndexOutOfRangeException || ex is DivideByZeroException || ex is Exception)
{
Console.WriteLine(ex.Message);
}
}
}
1) 如果我只想将异常消息输出到控制台,是否需要在if语句中检查我获取的异常类型,还是可以直接执行以下操作:
```` try { // some code here } catch (Exception e) { System.out.println(e.getMessage()); } ````...
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
...
2) 我的理解是,如果我需要在控制台上输出一个定义好的消息而不是使用异常消息本身,那么应该检查特定的异常类型 - 大致如下:
...
catch (Exception ex)
{
switch (ex):
{
case IndexOutOfRangeException:
Console.WriteLine("Personalized message #1");
break;
case DivideByZeroException:
Console.WriteLine("Personalized message #2");
break;
case Exception:
Console.WriteLine("Personalized message #3");
break;
}
}
...
非常感谢您对1)和2)的评论。感谢您的时间。
Exception
也是一个很大的代码异味。对于日志记录,或许可以这样做,但我仍然会尝试捕获我知道是安全的日志记录异常。 - Lasse V. Karlsen