1
7
而不是把它当作一个特殊的类来实现
这应该怎么办?这是完全相同的问题。你留下的内容
我觉得没有
正确答案
-事实上,您只能有一个环境异常,因此必须选择一个。然而,.NET框架确实设置了一些先例;一个例子是WCF服务代理(
当然,WCF中的这种行为是一种无止境的困惑;大多数人实际上认为,如果不打破它,它会非常恼人。谷歌“wcf dispose mask”,你就会明白我的意思了。所以也许我们不应该总是像微软那样做。
我个人认为
我的建议是要么在
大多数人可能会选择前一种方法,只是隐藏在
|
2
2
最后,我建议最好遵循
与msdn的文档不同
|
3
0
这里要问的一个问题是,异常是否可以由调用者有效地处理。如果没有任何合理的用途(手动删除目录中使用的文件?)最好记录错误并忘记它。 为了涵盖这两种情况,为什么不使用两个构造函数(或构造函数的参数)?
然后,您可以向类的用户推送关于适当行为可能是什么的决定。 一个常见的错误是无法删除的目录,因为其中的一个文件仍在使用中:您可以存储一个未删除的临时目录列表,并允许在程序关闭期间再次显式尝试删除(例如temporary directory.tidyup()静态方法)。如果有问题的目录列表为非空,则代码可能会强制垃圾收集处理未关闭的流。 |
4
0
您不能依赖这样的假设,即您可以以某种方式删除目录。其他进程/用户/任何可以同时在其中创建文件的对象。防病毒软件可能正忙于检查其中的文件等。
你能做的最好的事情是不仅有临时目录类,还有临时文件类(在内部创建
|
5
0
我会说,从一个锁定文件的析构函数中抛出一个异常,归根结底就是使用一个异常来报告一个预期的结果——你不应该这样做。 但是,如果发生了其他情况,例如变量为空,那么您可能确实有错误,那么异常是有价值的。 如果您预期锁定的文件,并且您或潜在的调用者可以对它们做些什么,那么您需要在类中包含该响应。如果你能回应,那就在一次性电话里做吧。如果您的调用者可能能够响应,请向您的调用者提供一种方法,例如tempfileslocked事件。 |
6
0
假设创建的目录位于系统临时文件夹中,就像
更新: 我会根据这样一个事实来选择这个选项:操作可能会因为关闭外部干扰而失败,比如来自另一个进程的锁,而且由于目录被放置在系统临时目录中,所以我看不到引发异常的好处。 对于那个例外,什么是有效的响应?再次尝试删除目录是不合理的,如果原因是来自另一个进程的锁,说明它不在您的直接控制之下。 |
7
-1
在a中使用类型
要创建目录本身,请使用
|