2012-05-19 3 views
1
를 처리하는 방법을

가능한 중복 :
Throwing exceptions from constructors개체 초기화 - 오류

객체를 초기화 - 수행에서 개체를 방지 할 것이다 문제를 처리하는 올바른 방법 일 것입니다 무슨 나중에 모든 책임을 맡았습니다.

예를 들어, 생성자가 원격 연결에 사용되는 구성 변수 집합을 초기화한다고 가정 해보십시오. 모든 설정 변수가 적절하게 설정되지는 않았으므로 객체가 해당 연결에 사용될 때 단순히 작동하지 않고 궁극적으로 예외가 발생합니다.

내가 거기에서 예외가 발생이

  1. 생성자에 대한 해결책의 몇 가지 생각할 수있는 다음
  2. 목적은 구성 설정의 유효성을 검사하는 방법을 제공한다 (이 해당 개체의 클라이언트가 있음을 의미
  3. 사용하기 전에 유효한 상태를 확인하는 추가 작업 단순히있는 그대로 놔두고 예외가 발생하면 클라이언트가 처리하도록 남겨 둡니다.

따라서 이러한 옵션 중 어떤 것이 시나리오에서 가장 좋은 방법으로 간주 될지, 아니면 더 나은 대안을 처리 할 수있는 대안이 있다면 무엇이 될 것입니까?

+0

은 langage와 구성 변수 전달 방법에 따라 다릅니다. 변수 세트는 어댑터와 같은 클래스의 인스턴스 일 수 있으며 어댑터가 구성 변수의 유효성을 검사하고 초기화 프로그램 자체가 아닌 무언가를 버리도록 할 수 있습니다. – mpm

답변

1

확실히 예외를 throw합니다. 그것은 당신의 취급을 너무 많이 추상화합니다.

그것은 당신이 (그러나 이에 국한되지 않음)를 포함하여 당신이 원하는 방식으로, 그것을 처리 할 수 ​​있습니다 :

  • 이 개체에서 활성화되지 않은 어떤 된 기능을 결정하는 변수를 설정합니다.
  • 해당 개체에 대한 메서드를 호출하십시오.
  • 오류 로깅의 일종을 호출 사용자
  • 에 오류를 표시

처리되지 않은 경우, 예외가 당신에게 무엇이 잘못되었는지에 대한 자세한 디버그 역 추적을주는 스크립트를 죽일 것입니다.

+0

그래서 생성자 내에서 예외가 발생하면 설정 값이 제대로 설정되지 않아 나중에 객체가 완전히 작동하는 데 필요합니다. –

+1

분명히 예외를 던지십시오/당신이 무언가가 잘못되었음을 알게되면/생성자에서 가장 가능성이 큽니다. –

+0

@ user1189880 : 예외적으로 예외가 발생합니다. 예외적 인 경우는 모든 것이 계획대로 진행되지 않은 경우입니다. (당신은 데이터베이스 연결을 기대했지만 뭔가 잘못되어 실패했습니다. 당신은 예외를 throw합니다). 일들이 계획대로 진행되지 않는다면 그것은 나중에 대상의 능력에 영향을 줄 가능성이 매우 높습니다. –