我的技术主管坚持这种例外机制:
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这里是catch方法的标识符,我们处理除OurException之外的异常.项目中的每个catch块都必须具有唯一标识符,以便我们通过查看日志来了解异常发生的位置.
对于每个方法,我们必须捕获OurException并抛出它.如果抛出其他类型的异常,我们必须在重新抛出之前记录它并通过OurException对其进行掩码.
这是一种合理的方法吗?如果有,有什么更好的选择?
编辑:我被告知堆栈跟踪在发布模式下不会产生有意义的结果.您是否建议捕获并抛出一般异常?
Edit2:谢谢大家.我用你的答案作为我反对此论点的一部分,但我被告知你没有足够的经验,也不知道如何应对现实生活中的情况.我必须走这条路.
您还可以查看异常处理应用程序块.
我在一些项目中使用它,它非常有用.特别是如果您想稍后更改异常处理的工作方式以及要捕获的信息.