카테고리 없음

[자바] Java의 catch 블록에서 메서드를 어떻게 호출합니까?

행복을전해요 2020. 12. 15. 17:53

재귀를 사용하여 제안한 방식으로 정확하게 수행 할 수 있습니다. 문제가 무엇인지 모르겠습니다. 개인적으로 루프를 사용하는 것이 일반적으로 재귀를 사용하는 것보다 더 간단합니다. 그러나 모든 예외를 잡을 수는 없습니다. 다른 예외를 다르게 처리하고자 할 수 있습니다.

private void one() {
  while(true) {
      try {
              //Valid data
                      break;
                          }catch(InvalidArgumentException e) { // or what ever you expect.
                                  two();
                                      }
                                        }
                                        }
                                        
                                        private void two() {
                                             //Process data with another input
                                                  //On entry,
                                                  }
                                                  

또는

private void one() {
  while(true) {
      try {
              //Valid data
                      break;
                          } catch(InvalidArgumentException e) { // or what ever you expect.
                                  // Process data with another input
                                          // On entry,
                                              }
                                                }
                                                }
                                                
-------------------

더 나은 방법은 method one()에서 데이터를 사용하기 전에 다른 곳에서 while 루프에서 데이터를 확인하는 것입니다. 유효하지 않은 동안 유효 할 때까지 수정하고 one().

문제의 의견 후

당신의 할 error변수가 클래스 레벨로 및 방법에 재설정 two()과 같이,

private void two() {
     this.error = false;
          //Process data with another input
               //On entry,
                    one();
                    }
                    

행운을 빕니다!

-------------------

코드에 표시된 사용법이 정확합니다. 이것이 올바르지 않다고 생각하는 이유는 무엇입니까?

그러나 나는 당신이 내가 주석이 달린 캐치에서 원래 방법을 기억하고 있음을 알았습니다.

  1. 예외가 계속 발생하면 스택 오버플로가 발생합니다.
  2. 시간에 따라 다르거 나 호출 중에 자체 조건이 변경되지 않는 한 몇 가지 예방 / 다른 로직을 확인하고 싶습니다.
  3. 루프에 빠진 경우 종료 조건을 고려해야합니다.


출처
https://stackoverflow.com/questions/7415141