2012-01-17 4 views
-1

아래 구문을 사용하여 ErrorCodeEnum 클래스에서 오류 코드를 가져옵니다. 어떻게하면 ErrorCodeEnum 클래스의 오버로드 된 생성자를 사용하여 직접이 작업을 수행 할 수 있습니까? 오버로드 된 생성자 사용

new ServiceException(ErrorCodeEnum.ERROR_1005.getErrorCode())

직접 에러 코드를 복용 오버로드 된 생성자를 만듭니다.

내가 공용 클래스 MainException 아래로 수업을하는 것은 RuntimeException의 {

private String errorMessage; 

private ErrorCodeEnum errorCodeEnum; 


public MainException() { 

} 



public MainException (ErrorCodeEnum errorCodeEnum, String errorMessage) { 
    //super(errorMessage); 
    this.errorCodeEnum = errorCodeEnum; 
    this.errorMessage = errorMessage; 
} 

public String getErrorCode() { 
    return errorCode; 
} 



public String getErrorMessage() { 
    return errorMessage; 
} 

}를 확장

와 같은 기본 클래스 : 공용 클래스 ServiceException이 {

public ServiceException() { 
} 


public ServiceException(ErrorCodeEnum errorCodeEnum,String errorMessage) { 

    super(errorCodeEnum,errorMessage); 

} 

}

MainException를 확장

과부하가 걸리지 않습니다.

답변

0

ErrorCodeEnum 인스턴스를 직접 수락하려면 ServiceException을 원한다고 생각하십니까? 내가 당신을 추측하고있어 무엇

지금이 :

public class ServiceException { 

    public ServiceException(int errorCode) { 
     // do stuff 
    } 

} 

단순히 당신이 이런 식으로 작업을 수행 할 수 있습니다, 생성자를 오버로드 :

public class ServiceException { 

    public ServiceException(int errorCode) { 
     // do stuff 
    } 

    public ServiceException(ErrorCodeEnum errorCodeEnum) { 
     // do other stuff 
    } 

} 

그런 다음 직접 new ServiceException(ErrorCodeEnum.ERROR_1005)를 호출 할 수 있습니다. 내가 MainException 클래스 ServiceException 확장 한

public class ServiceException { 

    public ServiceException(int errorCode) { 
     // do stuff 
    } 

    public ServiceException(ErrorCodeEnum errorCodeEnum) { 
     this(errorCodeEnum.getErrorCode()); 
    } 

} 
+0

나는 이런 식으로 --- 새로운 ServiceException을 던진다. ( ErrorCodeEnum.ERROR_1001.getErrorCode(), "Invalid data"); – Vishal

+0

ErrorCodeEnum과 함께 생성자에서 문자열 param을 어떻게 정의해야합니까? – Vishal

+0

'public ServiceException (ErrorCodeEnum errorCodeEnum, String message) {this (errorCodeEnum.getErrorCode(), message);}'이것은 정말 기본적인 Java 기능입니다. http://docs.oracle.com/javase/tutorial/java/index를 읽으십시오.html –

1

ErrorCodeEnum의 생성자가 사용자에게 ServiceException을 반환 할 수 없습니다. 따라서

public ServiceException(ErrorCodeEnum e) { 
    this(e.getErrorCode()); 
} 

throw new ServiceException(ErrorCodeEnum.ERROR_1005); 

아니면 ServiceException을 반환하는 열거의 방법을 사용할 수 있습니다 : 당신이 할 수있는 열거 자체의 인스턴스를 취 ServiceException의 생성자를 정의하는 것입니다 : 따라서

public enum ErrorCodeEnum { 

    // ... 

    public newServiceException() { 
     return new ServiceException(this.getErrorCode()); 
    } 
} 

및 사용할 수

throw ErrorCodeEnum.ERROR_1005.newServiceException(); 

물론 둘 다를 수행 할 수도 있습니다.

+0

: 새로운 생성자의 구현에 관해서는, 가장 쉬운 방법은 아마도 기존의 생성자를 이용하고 그것을 당신이 this에 대한 참조로 호출 할 수있는 오류 코드를 통과하는 것 ,이 오버로드 된 생성자는 MainException 클래스로 작성 될 수 있습니까? – Vishal

+0

물론 가능합니다. 왜 그냥 해보지 그래? –

관련 문제