Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# dll中的异常处理_C#_.net_Exception - Fatal编程技术网

C# dll中的异常处理

C# dll中的异常处理,c#,.net,exception,C#,.net,Exception,我在dll中有一个方法 private static void SaveXmlStringToXmlFile(string xmlString, string xmlFileFullPath) { XDocument.Parse(xmlString).Save(xmlFileFullPath); } 我知道Parse和Save会抛出几个异常。无论如何,我不知道如何处理这些异常,因为它是一个dll 放一个try/catch投掷围绕代码。这对当前代码来说不是

我在dll中有一个方法

    private static void SaveXmlStringToXmlFile(string xmlString, string xmlFileFullPath)
    {
        XDocument.Parse(xmlString).Save(xmlFileFullPath);
    }
我知道
Parse
Save
会抛出几个异常。无论如何,我不知道如何处理这些异常,因为它是一个dll

放一个
try/catch投掷围绕代码。这对当前代码来说不是多余的吗

最佳做法是什么


编辑:让我们假设dll的用户对
xmlString
的内容没有任何影响。

我认为在异常情况下,在另一个程序集(如dll)中的代码和条目程序集中的代码之间没有特别的区别

您应该将每个异常的try/catch放在有足够的信息来处理该异常的位置(如果您想这样做,则从中恢复)。与任何其他异常一样,您应该基于异常的类型和它可以从中抛出的嵌套级别来对此进行推理,而不是基于它起源的程序集


我通常使用的经验法则是:如果
SaveXmlStringToXmlFile
失败,它的调用者应该像什么都没发生一样继续吗?如果没有(也就是说,如果调用方中的以下语句应该被放弃),那么不要将try/catch放在
SaveXmlStringToXmlFile
中,而是放在更高的位置。

,就像经常发生的那样。。视情况而定。就个人而言,我不知道所有其他细节,我只会让函数抛出、记录它,并让调用方处理DLL中的异常是
SaveXmlStringToXmlFile
,或者只是
Parse
Save
?我认为他的意思和Save类似。对于OP,我认为您将很难找到最佳实践,因为它稍微取决于您的应用程序,这个功能依赖于多少,用户可以输入什么define@TheodorosChatzigiannakisSaveXmlStringToXmlFile在dll中,save和parse是XDocument的方法库的用户看到向他们抛出的
XmlException
IOException
会感到惊讶吗?