4

에 대한 여러 예외 문서 실제로 C# -DLL 내부의 공용 메서드에서 여러 예외를 문서화하는 방법에 대한 guidline을 검색하고 있습니다.XML - C#

예 : 그것은 그 예외를 문서화하는 올바른 방법

/// <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; 
} 

인가? 각 사례마다 하나의 예외 태그를 추가해야합니까, 아니면 null 값이 허용되지 않는 모든 매개 변수에 하나만 추가해야합니까?

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

답변

4

나는 것 유형별로 확실히 그룹 예외, 즉 Thrown if p_Parameter1, p_Parameter2 or any element of p_Parameter2 are null을.

참고로 MSDN의 설명서를 참조하십시오. example :

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

맞아요. 예제에서는 "- 또는 -"(UnauthorizedAccessException)를 사용하는 것이 일반적이라는 것을 보여줍니다. 내 의견으로는 그룹핑은 예외의 특정 이유를 간과 할 수있다. 하지만 모두가 그렇게한다면 조수와 함께 가자.) – germanSharper

2

MSDN 좋은이 경우 에뮬레이션 소스, 그들은 하나 개 exception 블록을 사용하고 내부의 다른 매개 변수를 열거하는 경향 것처럼 보이는 fewfunctionsthere의 설문 조사를 복용합니다.

이 방법을 사용하면 코드 소비자가 중복되는 항목을 포함하는 목록보다 고유 예외 목록을 보는 것이 더 쉽기 때문에 예외를 catch하는 것이 더 쉽습니다.