捕获异常并重新抛出它们时要考虑的最佳实践是什么?我想确保保留Exception对象InnerException和堆栈跟踪。以下代码块的处理方式有区别吗?
Exception
InnerException
try { //some code } catch (Exception ex) { throw ex; }
对比:
try { //some code } catch { throw; }
保存堆栈跟踪的方法是通过使用throw;This is valid as well
throw;
try { // something that bombs here } catch (Exception ex) { throw; }
throw ex;基本上就像从那时开始抛出异常一样,所以堆栈跟踪只会转到您发出throw ex;语句的地方。
throw ex;
Mike也是正确的,假设异常允许您传递异常(这是推荐的)。
Karl Seguin在他的编程基础电子书中也有一篇关于异常处理的精彩文章,这是一本很好的读物。
编辑:编程基础pdf的工作链接。只需在文本中搜索“异常”即可。