0

编写纯 API 似乎带来了一些挑战。例如,我习惯于编写 winforms/asp.net 应用程序,如果我的输入无效,我可以通过编程方式打开一个对话框/网页。

但是,API 不知道可以从中执行它的 GUI 应用程序。如果我有一个名为 TakeString (String s) 的方法,并且字符串不能超过 5 个字母,如果是这样,我将如何将控制权返回给客户端?一个例外似乎有点矫枉过正?如果我在方法中返回某些内容,则简单的返回将不起作用。

谢谢

4

2 回答 2

3

例外是完全正确的做法。你记录了你只会接受一个不超过 5 个字母的字符串作为输入,ArgumentException否则抛出。为什么会是矫枉过正?

在这种情况下,如果客户端无法检测到他们传递给您的内容的有效性,您甚至无需担心替代机制:如果调用代码对他们将传递给您的参数有任何疑问,他们自己检查它并不完全超出人类的智慧。

试图让 API 原谅无效输入是灾难的根源。在合理范围内尽可能严格地验证输入。如果您强迫客户表现良好,那么您以后遇到的问题就会少很多。

于 2011-01-18T21:11:19.663 回答
2

异常是处理此问题的最佳方法。

根据定义,如果用户提供了无效数据,这是一个例外。客户端应用程序需要负责处理异常并在必要时提示用户重新输入 。

你的 API(正如你已经指出的)应该不知道客户端应用程序,包括它是什么类型的应用程序,所以你的 API 所要做的就是说“嘿,那是无效的!” 并让客户端应用程序的开发人员弄清楚如何处理它。

举个简单的例子,如果您尝试以下 C# 代码行:

int myInt = Convert.ToInt32("SSDS");

.NET Framework 不会尝试重新提示用户。它只是抛出一个异常。

于 2011-01-18T21:10:31.390 回答