2017-02-04 2 views
1

나는이 방법을 사용하고있는 순간에 예외를 던집니까?예외에 오류 코드를 추가 할 수 있습니까?

throw new ArgumentException("My message"); 

그러나 mtethod가 여러 가지 이유로 ArgumentException을 throw 할 수있는 경우 예외의 정확한 이유를 알고 싶습니다.

는 나는이 떨어져 사용할 수 있다는 것을 알고

throw new ArgumentException("MyParamName", "MyMessage"); 

그러나 같은 매개 변수는 경우 ArgumentException을 던져 많은 이유가있을 수 있다면이 경우는 너무 많은 도움이되지 않습니다. 예를 들어 두 가지 속성을 가진 메소드에 하나의 매개 변수가 있고 하나는 0보다 커야하고 다른 하나는 0보다 작아야합니다. 첫 번째 매개 변수가 0보다 크거나 002보다 작 으면 오류 코드 001을 보내려고합니다. 두 번째 매개 변수가 0보다 작지 않을 때. 하지만 가능한 경우 예외에 오류 코드를 설정할 수 있는지 모르겠습니다. 나는 에러 코드를 추가 할 수있는 메시지의 끝에서

throw new ArgumentException("My message " + "(001)"); 

,하지만 난 문자열 (001)를 검색했다 :

나는이 방법을 사용할 수 있습니다. 그러나 더 나은 선택이 있을지 궁금합니다.

또 다른 방법은 내 자신의 예외를 만들 수 있지만 ArgumentException있는 경우 오류 코드에 대한 속성을 가질 수있는 새 예외를 만들고 약간의 오버 헤드가 원래 예외가 포함될 생각합니다.

제 질문은 무엇입니까? 다른 해결책이 있습니까?

감사합니다.

답변

2

당신의 errorCode 경우 ArgumentException의 자신의 재정을 쓸 수있다 : 그 후

public class ArgumentExceptionEx : ArgumentException 
{ 
    public int ErrorCode { get; } 
    public ArgumentExceptionEx(string paramName, int errorCode) 
     : base (paramName)  
    { 
     ErrorCode = errorCode; 
    } 
} 

당신이 새로운 던질 수 ArgumentExceptionEx ("MyParamName", 1) 또는 cuold 심지어 당신이 오류 코드의 사전 정의 된 금액이있는 경우 두 번째 매개 변수에 열거합니다.

+0

동일한 제안 사항에 대한 생각 – Saravanan

관련 문제