簡體   English   中英

C#的多個異常的XML文檔

[英]XML-Documentation of multiple exceptions for C#

我實際上是在尋找指南,如何在C#-DLL內的公共方法中記錄多個異常。

例:

/// <summary>
/// This method does something
/// </summary>
/// <param name="p_Parameter1">First parameter</param>
/// <param name="p_Parameter2">Second parameter</param>
/// <param name="p_Number">A number</param>
/// <exception cref="ArgumentNullException">
/// Thrown if p_Parameter1 is null</exception>
/// <exception cref="ArgumentNullException">
/// Thrown if p_Parameter2 is null</exception>
/// <exception cref="ArgumentNullException">
/// Thrown if any element of p_Parameter2 is null</exception>
/// <exception cref="ArgumentOutOfRangeException">
/// Thrown if p_Number is below or equal 0</exception>
/// <returns>A object</returns>
public static object DoSomething(
    object p_Parameter1, IList<object> p_Parameter2, 
    object p_Parameter3, int p_Number)
{
    if(p_Parameter1 == null)
        throw new ArgumentNullException(
            paramName:"p_Parameter1", 
            message:"Parameter is needed");
    if (p_Parameter2 == null)
        throw new ArgumentNullException(
            paramName: "p_Parameter2", 
            message: "Parameter is needed");

    for (int i = 0; i < p_Parameter2.Count; i++)
    {
        if(p_Parameter2[i] == null)
            throw new ArgumentNullException(
                paramName: String.Format("p_Parameter2[{0}]", i),
                message: "All elements have to be initialized");
    }

    if(p_Number < 0)
        throw new ArgumentOutOfRangeException(
            paramName: "p_Number", 
            message: "Parameter should be bigger then zero");

    var returnValue = new object();

    // do something where p_Parameter3 == null is allowed

    return returnValue;
}

是記錄這些例外的正確方法嗎? 我應該為每種情況添加一個例外標記,還是應該為所有不允許使用空值的參數添加一個例外標記?

/// <exception cref="ArgumentNullException">
/// Thrown if p_Parameter1, p_Parameter2
/// or any element of p_Parameter2 are null</exception>

我肯定會按類型對異常進行分組,即, Thrown if p_Parameter1, p_Parameter2 or any element of p_Parameter2 are null該異常。

作為參考,請查看MSDN上的文檔。 一個例子

ArgumentNullException   |   Either path, contents, or encoding is null.

在這種情況下,MSDN是一個很好的模擬來源,並且對那里一些 功能進行了調查,看來它們傾向於使用一個exception塊並枚舉其中的不同參數。

這樣,代碼的使用者就可以更輕松地知道可能捕獲哪些異常,因為與包含重復項的列表相比,查看不同異常的列表更容易出錯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM