Teh*_*One 6 c# exception tostring
只是好奇是否有人对我重写的ToString实现中抛出异常有任何意见.我的直觉告诉我这可能是不好的做法,但如果这是坏事,我似乎无法找到任何支持.
有什么想法吗?
代码:http://pastebin.com/mLEkBAAz
谢谢.
我不会这样做.我没有看到任何情况下让ToString()方法抛出异常而不是例如返回Object.ToString()字符串的表示更好.
您通常使用大量.ToString()调用进行调试.现在,假设您正在调试代码并尝试捕获错误.您的错误代码不仅会在随机位置抛出异常,您还必须处理让对象的字符串表示抛出异常的附加问题.
所以,通过你告诉我们的内容,我可能不会把你所放的代码放进去.ToString().我会找到另一个方法名称,比方说,.GetXMLRepresentation()我也有一个.CheckIfIsInValidState().然后,.GetXMLRepresentation()如果你试图以无效状态调用它,我会抛出异常.但我想.ToString()用于其他目的.
对象永远不应处于无效状态.一旦消费者尝试在其上设置无效状态,该对象就应抛出异常.
您的对象可能处于不可用状态(比如它是一个数据库连接对象,它还没有连接),在这种情况下它应该有一个IsConnected标志,或者它应该遵循状态机模式,以便对象的状态仍然是本身有效.
并且因为你的ToString()重载可能不会带任何参数,所以它应该永远不会是调用者的错误,它会引发异常.
因此,不,我想不出ToString()会抛出的任何异常.
编辑:在使用pastebin代码的情况下,最好的方法是将查询参数合并到一个单独的类中 - 称之为SearchParameters或其他类.
首先填充它,然后将其传递给将生成SQL代码的类.如果将SearchParameters对象传递给SearchQuery(可能通过构造函数使其可以使其不可变)参数无效,则可以在那里抛出异常.
这样,如果您的SearchQuery对象有更多的方法依赖于有效的搜索查询,您将不需要重复验证代码,当然,ToString()永远不会抛出异常.
| 归档时间: |
|
| 查看次数: |
2843 次 |
| 最近记录: |