如何处理异常

Ser*_*gel 2 language-agnostic exception-handling exception

我的技术主管坚持这种例外机制:

try
{
    DoSth();
}
catch (OurException)
{
    throw;
}
catch (Exception ex)
{
    Util.Log(ex.Message, "1242"); // 1242 is unique to this catch block
    throw new OurException(ex);
}
Run Code Online (Sandbox Code Playgroud)

1242这里是catch方法的标识符,我们处理除OurException之外的异常.项目中的每个catch块都必须具有唯一标识符,以便我们通过查看日志来了解异常发生的位置.

对于每个方法,我们必须捕获OurException并抛出它.如果抛出其他类型的异常,我们必须在重新抛出之前记录它并通过OurException对其进行掩码.

这是一种合理的方法吗?如果有,有什么更好的选择?

编辑:我被告知堆栈跟踪在发布模式下不会产生有意义的结果.您是否建议捕获并抛出一般异常?

Edit2:谢谢大家.我用你的答案作为我反对此论点的一部分,但我被告知你没有足够的经验,也不知道如何应对现实生活中的情况.我必须走这条路.

Joh*_*mez 5

您还可以查看异常处理应用程序块.

我在一些项目中使用它,它非常有用.特别是如果您想稍后更改异常处理的工作方式以及要捕获的信息.