Mat*_*ley 1 c# design-patterns exception
一方面,我被告知C#中的异常是"昂贵的",但另一方面,我仍然坚持如何实现这一点.
我的问题是这样的:我正在制作一个Stream派生词,包装一个NetworkStream.现在,我面临的问题是:Read(byte[] buffer, int offset, int count).从Stream功能的文档:
返回:
...如果已到达流的末尾,则为零(0).
问题是,在我实现的协议中,远程端可以发送"记录结束"令牌或"请回复"令牌.显然,如果在这开始发生Read()这会导致问题,因为我需要从函数返回,而我没有读过任何东西,所以我需要返回0,这意味着流已经完成,但它不是...... EndOfRecordException在这种情况下是一种或类似的理由?在这种情况下,当遇到这个令牌时(在Read()调用开始时确保这些令牌始终在早期返回时),它是否应该被抛出,这样这些令牌应该是如何形成某种模式的处理.
编辑:对于它的价值,这些代币通常每秒3-10次.最多,我不会期望超过25秒.
例外并不是那么昂贵 - 但它们也不一定是管理预期/正常流量的最佳方式.
对我来说,这听起来像你实际上并没有实现一个Stream-你是封装流为"读者".我可能倾向于编写一个特定于协议的读者类,其中包含用于检测记录结尾的合适方法,或者Try...用于获取数据或返回false的方法.
| 归档时间: |
|
| 查看次数: |
458 次 |
| 最近记录: |