编写纯API似乎会带来一些挑战。例如,我习惯于编写winforms / asp.net应用程序,如果我输入的内容无效,我可以编程方式打开一个对话框/网页。
但是,API不知道可以执行的GUI应用程序。如果我有一个名为TakeString(String s)的方法,并且字符串不能超过5个字母,如果是这样的话,如何将控制权返回给客户端?一个例外似乎有点矫枉过正?如果我在方法中返回一些东西,那么简单的返回将不起作用。
谢谢
答案 0 :(得分:3)
异常是正确的做法。如果字符串为5个字母或更少,则表明您只接受字符串作为输入,否则抛出ArgumentException
。为什么那会有点矫枉过正?
在这种情况下,如果客户端无法检测到他们传递给你的内容的有效性,你甚至不需要担心其他机制:如果调用代码对他们要去的参数有任何疑问通过你,他们自己检查它并不完全超出人类的智慧。
尝试使API无效输入是一种灾难。在合理范围内尽可能严格地验证输入。如果你强迫客户端表现良好,那么以后你会遇到很少的问题。
答案 1 :(得分:2)
异常是处理此问题的最佳方法。
根据定义,如果用户提供的是无效数据,则这是一个例外。 客户端应用 需要负责处理异常并提示用户根据需要重新输入。
您的API(正如您已经指出的那样)应该不知道客户端应用程序,包括它的应用程序类型,所以您的所有API都必须说“嘿,那是无效的!”并让客户端应用程序的开发人员弄清楚如何处理它。
如果您尝试以下C#代码行,请参阅一个简单示例:
int myInt = Convert.ToInt32("SSDS");
.NET Framework不会尝试重新提示用户。它只是抛出异常。