2016-06-04 1 views
0

생성자 수준에서 ID 할당을 갖는 클래스가 있습니다.클래스의 생성자에서 예외를 throw하는 것이 잘못된 이유

public class Employee 
{ 
    int _id; 
    string name; 

    public Employee(int id, string name) 
    { 
     if(id<1) throw new Exception("ID must be positive, greater than 0); 
     _id=id; 
     this.name = name; 
    } 
} 

이 그것을 할 수있는 올바른 방법이다 : 나는 0 또는 내가 전달 된 값이 기준을 충족하지 않는 경우에 예외를 throw 할 수 있도록 음이 문제를 일으키는 경우 id 매개 변수 이상 0되고 싶어?

답변

2

잘못된 것은 아니며, 클래스의 불변성을 보호하기 위해 유효한 일입니다. 이 작업을 수행하지 않은 경우 원하지 않는 잘못된 상태의 객체를 만들 수 있습니다.

그러나 더 적절한 예외 유형을 사용하는 것이 좋습니다. ArgumentOutOfRangeException을 던지면 실제로 발신자와 통신하는 것과 더 가깝습니다. the docs에서

:

메소드가 호출되고 메서드에 전달 된 인수 중 적어도 하나가 null는 아니고, 세트의 구성원이 아닌 잘못된 값이 포함되어있는 경우

을 ArgumentOutOfRangeException 예외가 발생 인수에 대해 기대되는 값 중.

+0

값이 0보다 작은 값을 허용하지 않으면 단위를 지정하는 것이 좋습니다. 수학 연산에 대해 걱정하지 않는 한 유형에 제한이 반영되어야합니다. 누구에게나 수업을 사용하는 힌트 – Peter4499

관련 문제