C#:我应该抛出ArgumentException还是DirectoryNotFoundException?

Svi*_*ish 14 c# exception

我有一个方法,它将目录路径作为字符串.在方法的开头,它检查此路径是否存在,如果不存在,则应该抛出异常.我认为它应该扔一个DirectoryNotFoundException或一些东西,而不是一个不太具体ArgumentException.

我阅读了msdn文档,DirectoryNotFoundException并说它

DirectoryNotFoundException使用HRESULT COR_E_DIRECTORYNOTFOUND具有该值的值0x80070003.

我不知道究竟是什么意思,它看起来有点可怕......我是否应该抛出异常,还是应该坚持常规ArgumentException?或者我应该坚持ArgumentException简单,因为这是我抱怨的论点?要么?

public void MakeFunOf(string path)
{
    if(!Directory.Exists(path))
        throw new WhatException();
    TellJokeAbout(path);
    PointAndLaughAt(path);
}
Run Code Online (Sandbox Code Playgroud)

Tal*_*joe 16

如果您希望开发人员在调用方法之前检查目录是否存在,请使用ArgumentException.如果您希望开发人员可以选择处理丢失的目录,请使用DirectoryNotFound异常.

换句话说,"这是开发人员告诉我访问不存在的目录的错误吗?"

就个人而言,我使用DirectoryNotFound异常.