c# - 具体异常处理
问题描述
MyException1
在这种情况下,是否有任何理由使用特定的 expetion 课程MyException2
?
public static void Main()
{
try
{
TestMethod();
}
catch(Exception ex)
{
Console.Writeline(ex);
}
}
private static void TestMethod()
{
// This method can throw Exception1 and Exception2
}
public class MyException1 : Exception {}
public class MyException2 : Exception {}
我知道,当我们为每种异常类型设置多个 catch 块时,这是有意义的。但在这种情况下MyException1
和MyException2
空的都是相似的。这些抛出的异常将被转换为 Main 方法中的 Exception 类。也许最好不要用这种处理方式创建两个类似的异常类?
解决方案
块背后的概念catch
是您处理异常。如果某种类型的异常需要某种类型的处理,那么当该异常有自己的类时会很有帮助,这样它就可以有自己的catch
块。
例如,如果致命MyException1
时可以安全吞咽,您可以这样写:MyException2
try
{
DoSomethingHard();
}
catch (MyException1 exception1)
{
_log.Write("Warning: small exception, no worries. {0}", exception1.Message);
continue;
}
catch (MyException2 exception2)
{
_log.Write("Fatal: big exception, gotta bail out now. {0}", exception2.Message);
break;
}
推荐阅读
- javascript - 我的导航栏无法点击
- android - 是否可以以编程方式检查 Playstore 上可用的应用程序版本?
- javascript - 角度和 Firebase 数据检索中的错误
- python - django-tabbed-admin Django 2.0 与 RequestContext 的兼容性问题
- java - Pivot 未排序 [快速排序]
- python-2.7 - Python。GZIP 解压错误:解压数据时出现错误 -3:标头检查不正确
- python - 当某些字典重复时,在python中合并两个字典列表
- javascript - 画布游戏空格键滚动浏览器
- c# - C#、Winforms 设置
- node.js - Express-Cassandra 在单个列的同一查询中从 SET 数据类型进行多值搜索