Dan*_*olf 9 c# exception xml-comments code-documentation
在C#中使用XML注释,我可以记录一个方法可能抛出异常:
<exception cref="FooException">Thrown if foo is invalid.</exception>
Run Code Online (Sandbox Code Playgroud)
但是,如果某个方法exception的XML文档中没有标记,则这可能意味着以下两种情况之一:
exception标记来记录这一事实.根据我的经验,第二种情况通常就是这样.那么问题是:
如何明确记录方法永远不会抛出异常?
到目前为止,我提出的最好的方法是简单地在方法中提及它summary,例如"此方法不会抛出异常".但我想知道是否有更正式的方式表达这一点,就像throw()在C++中一样(尽管这可能是一个不好的例子).
在摘要中添加它有利于文档记录以及与其他开发人员的沟通。
你说你想要一个更正式的方式,强硬。据我所知,C#(非常少)Exception有两个主要的子类,ApplicationException并且SystemException. 您通常不能保证不会抛出系统异常。然而,我们可以保证不会ApplicationException抛出任何异常。
对于代码契约,您可以使用EnsuresOnThrow后置条件:
Contract.EnsuresOnThrow<ApplicationException>( false );
Run Code Online (Sandbox Code Playgroud)
将代码主体包装在 global 中try/catch,并False在 catch 块中断言。
在这两种情况下,静态分析器应该明白,当异常发生时,断言或后置条件永远不会为真:因此,当且仅当函数没有抛出异常时,应用程序才会履行其契约。
| 归档时间: |
|
| 查看次数: |
768 次 |
| 最近记录: |