如何指定Delphi方法引发的异常?

3

再次提问一个Delphi初学者问题。有没有一种标准的方法来指定方法引发的异常(我已经搜索过这个问题,但似乎找不到关于处理异常以外的任何主题)。

换句话说,在函数/过程签名中是否有一种标准的方法来说明“我的函数/过程可能会引发这个特定的异常”(我认为没有)?那么让您的API客户端知道哪些类型的异常将被给定的过程/方法触发的最佳做法是什么呢?


3
只有像Java这样的语言强制开发人员在代码中指定,但实际上这只会带来更多麻烦。像C#这样的语言可以允许在注释/文档中指定异常。所以对于Delphi,我认为你只能留下具体的文档。 - Lex Li
而像C++这样的编程语言甚至已经不再在代码中指定确切的异常。 - Remy Lebeau
1
Anders Hejlsberg写的关于这个主题的有趣阅读材料:http://www.artima.com/intv/handcuffs.html - Lieven Keersmaekers
另一个有趣的阅读来自Java联合开发者Martin Odersky:在他的后Java语言中,“已检查异常”功能被移除,因为实际上会造成伤害,请参见http://steshaw.org/posts/2007/06/18/exceptions-checked-or-not/index.html。还可以阅读https://softwareengineering.stackexchange.com/questions/177806/decision-for-unchecked-exceptions-in-scala和http://www.scala-lang.org/old/node/8787和http://www.scala-lang.org/old/node/1939(没有任何后续!) - Arioch 'The
请阅读Phil Swenson于2009年8月18日在https://groups.google.com/forum/#!topic/javaposse/XnrpS0nXDSw%5B51-75%5D的评论。 - Arioch 'The
1个回答

6

在Delphi Pascal语言中,没有语法可以实现您所要求的功能。您可以在函数/过程/方法的文档中列出可能出现的异常。


感谢您的回答。还有一个问题:未处理的异常会发生什么?我知道在 GUI 应用程序的情况下,它会被 Delphi 运行时处理并显示对话框。但是,在服务器应用程序(例如 ISAPI 扩展)的情况下会发生什么? - BigONotation
取决于ISAPI DLL的实现方式。 - David Heffernan
基本上,ISAPI扩展将是一个TWebModule实例,它会在IIS中加载。如果您不处理异常,它会导致IIS崩溃吗?希望不会! :) - BigONotation

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接