문자열이 유효한지 여부를 확인 add(String)
하기 inspectSequence(String)
위해 개인 메서드 를 호출하는 공용 메서드 가 있습니다.
이 메서드는 전달 된 String
것이 유효 하면 배열을 반환하고 , 유효하지 않으면 메서드가 발생합니다.IllegalArgumentException
다음은 코드
public void add(String sequence) throws IllegalArgumentException{
inspectSequence(sequence);
}
private int[] inspectSequence(String sequence){
int[] array;
//some actions
if(<some condition>) throw new IllegalArgumentException("description");
return array;
}
따라서 경우에 무효 String
가 add
메소드 출력에 전달 되면 다음이됩니다.
java.lang.IllegalArgumentException: description
at inspectSequence
at add
그러나 inspectSequence
이것이 실현 세부 사항이기 때문에 사용자가 비공개 방법 에 대해 알기를 원하지 않습니다 .
그렇다면 내가 무엇을 할 수 있습니까? 여기에서 확인되지 않은 예외를 던지는 것이 좋은 생각입니까?
그리고 inspectSequence
메서드 내부에서 예외를 던지는 것이 좋습니다. 또는 null
제공된 String
것이 유효하지 않을 때 반환 한 다음 add
메서드 에서 반환 된 결과를 확인 하고 이에 따라 예외를 던지거나 던지지 않습니까?
그러나 이것이 실현 세부 사항이기 때문에 사용자가 private inspectSequence 메소드에 대해 알기를 원하지 않습니까?
아니오라고 말하고 싶습니다. 사용자 (이 컨텍스트에서 코드를 호출하는 사람을 의미 함)가 .NET과 같은 내부 메서드에 대해 "알고"싶지 않은 것은 사실입니다 inspectSequence()
. "알다"라는 말은 전화를 걸 수 있고 의지 할 수 있다는 뜻입니다.
아는 것을 예외가 던져 어떤 상황에서 할 수있는 것은 발신자가 알고에 대해 알아야 할 뭔가가 정확히 어디에 가 발생합니다 필요하지 않습니다하지만 해치지 않을 것입니다.
물론 호출하는 메서드에서 해당 예외를 포착하고 다른 예외를 던질 수 있지만 정보 가 손실되고 입력이 수락되지 않은 정보 가 호출자에게 손실 되므로 코드를 디버그 / 유지 관리하기가 더 어려워 질 수 있습니다.
그렇다면 내가 무엇을 할 수 있습니까? 여기에서 확인되지 않은 예외를 던지는 것이 좋은 생각입니까?
이는 해당 예외를 런타임에 처리해야하는지 아니면 수정해야하는지에 따라 다릅니다.
호출자가 시퀀스가 유효하지 않다는 것을 알아야하고 해당 정보를 적절하게 처리해야한다고 가정합니다 (예 : 최종 사용자에게 일부 정보 표시). 이 경우 해당 사례를 설명하는 확인 된 예외를 throw하는 것이 좋습니다.
반면에, 입력이 메소드의 계약을 위반하는 경우, 즉 입력 시퀀스가 유효 하지 않아야 (또는 그렇지 않으면 프로그래밍 오류) 다음은 IllegalArgumentException
괜찮을 것입니다-null을 기대하지 않는 메소드에 null을 전달하는 것과 같은 상황 매개 변수.
그리고 inspectSequence 메서드 내에서 예외를 던지는 것이 좋습니다. 또는 제공된 String이 유효하지 않을 때 null을 반환 한 다음 add 메서드에서 반환 된 결과를 확인하고 이에 따라 예외를 던지거나 던지지 않습니까?
아니오라고 말하고 싶습니다. null을 반환 한 다음 호출 메서드에서 처리하는 것이 일부 경우 (예 : null을 다르게 처리하는 다른 호출자가있는 경우) 합리적인 방법 일 수 있지만 귀하의 경우는 그렇지 않습니다. 특히 null이 그 경우 정의해야하는 여러 의미를 가질 수 있기 때문에 코드가 더 복잡 해져서 읽고 유지하기가 더 어려워집니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다