Java 메소드에는 예외를 발생시키는 다른 메소드가 포함되어 있습니다.

성급한 사람

문자열이 유효한지 여부를 확인 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;
}

따라서 경우에 무효 Stringadd메소드 출력에 전달 되면 다음이됩니다.

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

예외 만 발생시키는 다른 메서드를 호출 할 때 "메소드가 결과를 반환해야 함"

분류에서Dev

Node.js : 메소드에서 예외가 발생하면 console.log 메시지가 표시되지 않습니다. 이유는 무엇입니까?

분류에서Dev

Koin과 함께 UseCase를 삽입 할 때 메소드에서 Android에서 'java.lang.StackOverflowError'예외가 발생했습니다.

분류에서Dev

Java에서 한 메소드에서 다른 대체 메소드로 문자열을 호출하는 함수가 있습니까?

분류에서Dev

EJB Timer : @Timeout 어노테이션 인 예외가있는 메소드에 넣습니다.

분류에서Dev

firebase 메소드가 reactjs를 완료하기 전에 다른 메소드가 실행되는 문제

분류에서Dev

Java ArrayList에 예상 결과를 반환하지 않는 메소드가 있습니다.

분류에서Dev

Xpages-NotesView.getNextDocument (lotus.domino.local.Document) 메소드를 호출하는 중에 예외가 발생했습니다.

분류에서Dev

junitparameter 예외 메소드에는 매개 변수가 없어야합니다.

분류에서Dev

Java는 일반 유형 매개 변수가있는 메소드와 일반 매개 변수가 아닌 다른 메소드가있을 때 호출 할 오버로드 된 메소드를 어떻게 결정합니까?

분류에서Dev

워드 프레스에서 함수 / 메소드를 다른 위치 / 파일에 추가 / 등록되는 액션에 연결하는 방법이 있습니까?

분류에서Dev

c #에는 단어 예외 번호가 포함되어 있습니다.

분류에서Dev

EJB-보류중인 예외를 다시 발생시키는 중에 예기치 않은 예외가 발견되었습니다.

분류에서Dev

동적 인수가있는 메소드를 대기 할 때 예외 (때때로)가 발생합니다.

분류에서Dev

JAVA는 다른 방법의 X 시간 사이에 메소드를 호출 할 수 있습니까?

분류에서Dev

PHPUnit : 예외는 어디에서 발생시켜야합니까 (expectException 메소드)?

분류에서Dev

배열이 다른 배열에 포함되어 있는지 확인하는 numpy 메서드가 있습니까?

분류에서Dev

Rails 5에는 ActiveModel Select 메서드가 포함되어 있습니다.

분류에서Dev

클래스는 Java에서 두 개의 다른 스레드에 대해 두 개의 실행 메소드를 가질 수 있습니까?

분류에서Dev

CLR 예외가 발생할 때마다 이벤트를 발생시키는 방법이 있습니까?

분류에서Dev

예외를 발생시키는 코드 줄을 볼 수 없습니다.

분류에서Dev

예상되는 getter 메소드를 찾을 수 없습니다.

분류에서Dev

" 'getSystemService (java.lang.String) 메소드를 해결할 수 없습니다."라는 메시지가 표시되는 이유를 잘 모르겠습니다.

분류에서Dev

jsViews에는`setProperty ()`메소드가 있습니다. `removeProperty ()`는 어떻게하나요?

분류에서Dev

arrayList를 참조하는 onClick 메소드 외부에 arrayList가 있지만 오류가 발생합니다.

분류에서Dev

예외를 발생시키지 않아야하는 함수가 있습니까?

분류에서Dev

Java가 내 toString 메소드를 무시하는 것 같습니다.

분류에서Dev

Java는 컴포넌트에서 메소드 헤더를 포함하는 문자열을 분해합니다.

분류에서Dev

Java는 컴포넌트에서 메소드 헤더를 포함하는 문자열을 분해합니다.

Related 관련 기사

  1. 1

    예외 만 발생시키는 다른 메서드를 호출 할 때 "메소드가 결과를 반환해야 함"

  2. 2

    Node.js : 메소드에서 예외가 발생하면 console.log 메시지가 표시되지 않습니다. 이유는 무엇입니까?

  3. 3

    Koin과 함께 UseCase를 삽입 할 때 메소드에서 Android에서 'java.lang.StackOverflowError'예외가 발생했습니다.

  4. 4

    Java에서 한 메소드에서 다른 대체 메소드로 문자열을 호출하는 함수가 있습니까?

  5. 5

    EJB Timer : @Timeout 어노테이션 인 예외가있는 메소드에 넣습니다.

  6. 6

    firebase 메소드가 reactjs를 완료하기 전에 다른 메소드가 실행되는 문제

  7. 7

    Java ArrayList에 예상 결과를 반환하지 않는 메소드가 있습니다.

  8. 8

    Xpages-NotesView.getNextDocument (lotus.domino.local.Document) 메소드를 호출하는 중에 예외가 발생했습니다.

  9. 9

    junitparameter 예외 메소드에는 매개 변수가 없어야합니다.

  10. 10

    Java는 일반 유형 매개 변수가있는 메소드와 일반 매개 변수가 아닌 다른 메소드가있을 때 호출 할 오버로드 된 메소드를 어떻게 결정합니까?

  11. 11

    워드 프레스에서 함수 / 메소드를 다른 위치 / 파일에 추가 / 등록되는 액션에 연결하는 방법이 있습니까?

  12. 12

    c #에는 단어 예외 번호가 포함되어 있습니다.

  13. 13

    EJB-보류중인 예외를 다시 발생시키는 중에 예기치 않은 예외가 발견되었습니다.

  14. 14

    동적 인수가있는 메소드를 대기 할 때 예외 (때때로)가 발생합니다.

  15. 15

    JAVA는 다른 방법의 X 시간 사이에 메소드를 호출 할 수 있습니까?

  16. 16

    PHPUnit : 예외는 어디에서 발생시켜야합니까 (expectException 메소드)?

  17. 17

    배열이 다른 배열에 포함되어 있는지 확인하는 numpy 메서드가 있습니까?

  18. 18

    Rails 5에는 ActiveModel Select 메서드가 포함되어 있습니다.

  19. 19

    클래스는 Java에서 두 개의 다른 스레드에 대해 두 개의 실행 메소드를 가질 수 있습니까?

  20. 20

    CLR 예외가 발생할 때마다 이벤트를 발생시키는 방법이 있습니까?

  21. 21

    예외를 발생시키는 코드 줄을 볼 수 없습니다.

  22. 22

    예상되는 getter 메소드를 찾을 수 없습니다.

  23. 23

    " 'getSystemService (java.lang.String) 메소드를 해결할 수 없습니다."라는 메시지가 표시되는 이유를 잘 모르겠습니다.

  24. 24

    jsViews에는`setProperty ()`메소드가 있습니다. `removeProperty ()`는 어떻게하나요?

  25. 25

    arrayList를 참조하는 onClick 메소드 외부에 arrayList가 있지만 오류가 발생합니다.

  26. 26

    예외를 발생시키지 않아야하는 함수가 있습니까?

  27. 27

    Java가 내 toString 메소드를 무시하는 것 같습니다.

  28. 28

    Java는 컴포넌트에서 메소드 헤더를 포함하는 문자열을 분해합니다.

  29. 29

    Java는 컴포넌트에서 메소드 헤더를 포함하는 문자열을 분해합니다.

뜨겁다태그

보관