结构化异常处理是不是很糟糕?处理异常的正确方法是什么?
编辑:使用C#在.NET中进行异常处理.
我通常有一组特定的异常类(DivideByZeroException,ArrayTypeMismatchException),并且没有通用的"catch(Exception ex)".
这背后的想法是我希望发生某些类型的异常,并在它们发生时定义特定的动作,并且意外的异常会在界面(windows或web)上升.这是一个好习惯吗?
我不确定你的'结构化异常处理'是什么意思.
在异常处理中可以做的最糟糕的事情是"吞下"异常或静默处理它.
不要这样做:
try { ... } catch (Exception e) { //TODO: handle this later }
这通常是出于懒惰而无法编译代码.如果您不知道如何在特定级别处理异常,请让该方法抛出异常并至少在顶部有一个catch all handler.以某种方式提供反馈(通过GUI,页面/电子邮件发送给支持人员,日志文件),以便最终解决问题.无声地捕获异常几乎总会导致更大的问题在以后发生,并且很难追踪.