代码之家  ›  专栏  ›  技术社区  ›  Peter T. LaComb Jr.

组件抛出一个至少不包含文件名的fileNotFound异常是否合适?[关闭]

  •  0
  • Peter T. LaComb Jr.  · 技术社区  · 16 年前

    组件抛出一个至少不包含文件名的fileNotFound异常是否合适?

    3 回复  |  直到 16 年前
        1
  •  2
  •   Donal Fellows    16 年前

    也许吧,但请不要。那个可怜的家伙想弄清楚出了什么问题,怎么解决,这让他非常疯狂。

        2
  •  0
  •   Community Mohan Dere    9 年前

    假设有问题的文件应该保留 看不见的 --好像这不关用户的事。是的,这有点尴尬,但这是合理的情况。

    (这并不是说它有理由抛出FNFException;在这种情况下,一般的“内部错误”更合适。)


    不同的情况是 linked question . COM+组件没有 真正地 扔一个 FileNotFoundException . 它只通过特定于inespecific的 ThrowExceptionForHRInternal() 方法。注意,它(可能)处理的是一个非托管组件,因此所有可用的错误详细信息都是操作系统提供的——它可能必须求助于API调用,例如 GetLastError() .

    操作系统提供了一些 system error codes 这将揭示问题的本质。不幸的是,在这个层次上,你会得到很多…所以,这次没有文件名。

        3
  •  0
  •   Robert Seder    16 年前

    我认为,如果您正在编写组件,则不应该抛出这样的异常。这使您的客户机与您的实现紧密地结合在一起。我的意思是,现在,您正在从一个文件中读取数据,并且客户已经接受过培训,只捕获System.IO.IOException。但是在下一个版本中,当界面保持不变,而您将转到Web服务时,会怎么样呢?

    您这边的一个实现更改,刚刚成为您的消费者的一个突破性更改。他们现在必须重新编写代码来捕获FaultException。

    如果创建自己的异常(就像在.NET框架中那样),应该做什么?为此,请启用类似datasourceEndpointNotFoundException或类似的泛型,您可以将IOException附加/包含为内部异常,以便为它们提供更多线索。但是这种方法将来会验证您的代码,这样如果您更改实现,您的客户机就不会受到影响。希望有帮助。