我的技术负责人坚持这种异常机制:
try
{
DoSth();
}
catch (OurException)
{
throw;
}
catch (Exception ex)
{
Util.Log(ex.Message, "1242"); // 1242 is unique to this catch block
throw new OurException(ex);
}
这里的 1242 是我们处理 OurException 以外的异常的 catch 方法的标识符。项目中的每个 catch 块都必须有一个唯一的标识符,这样我们就可以通过查看日志来知道异常发生在哪里。
对于每个方法,我们都必须捕获 OurException 并抛出它。如果抛出了其他类型的异常,我们必须在重新抛出它之前记录它并用 OurException 屏蔽它。
这是一个合理的方法吗?如果有的话,有什么更好的选择?
编辑:我被告知堆栈跟踪在发布模式下不会产生有意义的结果。您是否建议捕获和抛出通用异常可以?
编辑2:谢谢大家。我用你的回答作为我反对这个论点的一部分,但我被告知你没有足够的经验,不知道如何处理现实生活中的情况。我必须走这条路。