Hei*_*cht 7 delphi coding-style exception
在引入新的异常类型时,我总是不确定如何正确地执行此操作.有共同的约定吗?你怎么做呢?
我对你组织它们的范围感兴趣(将它们保存在它们所使用的单元中?在组件级别上有一个单元吗?包级别?应用程序?)
这也会影响命名.你包括多少背景?是否更好地使它们非常具体(如EPersonIDNotFoundError)或尝试使它们可重用(如ENotFoundError)?
后缀"错误"怎么样 - 什么时候应该添加它并何时离开呢?我无法看到例如以下的逻辑Classes.pas:
EWriteError = class(EFilerError);
EClassNotFound = class(EFilerError);
EResNotFound = class(Exception);
Run Code Online (Sandbox Code Playgroud)
我所知道的唯一真正的约定是用它们作为前缀E.我还没有真正给它多想过去,但现在我想起来了,在我看来,这两个Error和Exception常用的后缀.如果你把它们混合在一起,我会说这Exception与意外出错的事情有关,例如连接被破坏,或者文件结果是不可读的,而错误则与错误的输入有关,例如预期的数字,但有人输入了文字.
VCL似乎也遵循某些约定,但它似乎只有在没有它的情况下才会添加后缀,例如没有它,例如
EConvertError,EMathError,EVariantError
VS
EAccessViolation,EInvalidPointer,EZeroDivide
后者描述错误本身,其中第一个列表需要后缀来指示某个进程或实体中的错误.
这些示例可以在SysUtils中找到,也许您可以查看一下,因为它包含许多异常类以及更大量异常的基类.Exception除了一些确实你希望永远不会遇到的非常具体的错误,例如EHeapException和ESafecallException之外,很少有这些错误.