【发布时间】:2020-04-02 20:03:24
【问题描述】:
由于我有几个子类,因此我正在尝试使用全局 try catch 异常处理程序
内部有 try catch 的方法。所以基本上我希望父类方法能够捕获所有这些
异常并记录下来。
其中一个常见的是 SQL 异常。
这里创建一个可以捕获错误的通用处理程序的最佳方法是什么?
这是我的应用程序中发生的事情的示例
public class Parent
{
public void ParentMethod()
{
try
{
var childClass = new Child();
var process = childClass.Process();
if (process)
{
// Do this
}
else
{
// raise new Exception
}
}
catch(Exception ex){
WriteToErrorLogger.Error(ex)
}
}
}
public class Child
{
public bool Process()
{
try{
// Do something and save to Database
}
catch (SqlException sqlEx)
{
// log exception
return false;
}
catch (Exception ex)
{
// log exception
return false;
}
}
}
【问题讨论】:
-
除非我理解错了,你不能把所有的子try catchs都去掉并使用父级一级吗?所有异常都继承自
Exception,因此它们都将在此处被捕获,而无需指定每种异常类型。 -
好的,但是如果我要扩展错误处理,我怎么知道哪个类引发了错误?
-
堆栈跟踪会告诉你。还有其他方法可以找到,但这是最简单的
-
也可以让异常让你的整个进程崩溃。
-
如果您只想要一个全局异常处理程序,请将其放入程序的
main方法中。在不了解代码的实际上下文的情况下,这是一个很难很好地回答的问题。一般而言,您应该只在您可以实际处理异常或在工作单元边界处捕获异常,如果您不希望异常导致您的应用程序完全失败。
标签: c# exception error-handling