我经常遇到一个函数Foo
,想知道这个函数可能会抛出什么异常。为了找出我,然后研究Foo
的实现,但这还不够。 Foo
可能确实会调用引发异常的函数Bar
。
有时我甚至会错过Java检查过的异常处理。
因此,我很有必要记录每个函数可以抛出的异常:问题是:如何?有关如何记录异常的最佳实践吗?你是如何处理这个问题的?
答案 0 :(得分:3)
答案 1 :(得分:1)
我们对文档使用Javadoc样式注释。我们提取信息并使用一些简单的文本脚本生成输出。我们也使用了DelphiCodeToDoc。
记录异常,我们已经强制要求使用@throws标记。
答案 2 :(得分:1)
大多数Delphi应用程序都是VCL应用程序。它们不需要检查异常,因为主消息循环有一个try / except块捕获所有内容。
优良作法是记录您的代码可以明确提出哪些异常。
我会使用XMLDoc(在XML上有various questions,在SO上有here is some documentation from Embarcadero}。
但请注意,底层代码也可能引发异常。根据您对图书馆的影响,您可以或不能保证它们始终相同。另一件事是操作系统:根据您的运行地点,您可以获得不同的例外情况。
- 的Jeroen
答案 3 :(得分:1)
这非常适合记录代码 - 来自DevJet.net的Documentation Insight
答案 4 :(得分:0)
我使用XMLDoc注释(参见链接和讨论here。它基本上是在接口部分的代码中添加一种特殊类型的注释,就在属性或方法声明之上。这是一个荒谬的(当然)示例如果在代码中添加类似的样式注释,则在编写代码时,它们会在Code Insight中弹出,就像VCL的文档一样。
type
{$REGION 'TMyClass description'}
/// <summary>TMyClass is a descendent of TComponent
/// which performs some function.</summary>
{$ENDREGION}
TMyClass=class(TComponent)
private
// your private stuff
FSomeProp: Boolean;
procedure SetSomeProp(Value: Boolean);
protected
// your protected stuff
public
{$REGION 'TMyClass constructor'}
/// <summary> TMyClass constructor.</summary>
/// <remarks>Creates an instance of TMyClass.</remarks>
/// <param>Owner: TObject. The owner of the instance of TMyClass</param>
/// <exception>Raises EMyObjectFailedAlloc if the constructor dies
/// </exception>
{$ENDREGION}
Create(Owner: TObject); override;
published
{$REGION 'TMyClass.Someprop'}
/// <summary>Someprop property</summary>
/// <remarks>Someprop is a Boolean property. When True, the
/// thingamajig automatically frobs the widget. Changing this
/// property also affects the behavior of SomeOtherProp.</remarks>
{$ENDREGION}
property Someprop: Boolean read FSomeProp write SetSomeProp;
end;
我更喜欢在区域中包装这些XMLDoc注释,因此除非我想编辑它们,否则它们可以折叠。我已经这样做了;如果您不喜欢它们,请删除{$ REGION}和{$ ENDREGION}
的行答案 5 :(得分:0)
我使用PasDoc来记录几乎所有的Delphi项目。它包含一个“加注”标签,可以满足您的要求。
此致 - 都灵