카테고리 없음
[자바] 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();
}
행운을 빕니다!
-------------------코드에 표시된 사용법이 정확합니다. 이것이 올바르지 않다고 생각하는 이유는 무엇입니까?
그러나 나는 당신이 내가 주석이 달린 캐치에서 원래 방법을 기억하고 있음을 알았습니다.
- 예외가 계속 발생하면 스택 오버플로가 발생합니다.
- 시간에 따라 다르거 나 호출 중에 자체 조건이 변경되지 않는 한 몇 가지 예방 / 다른 로직을 확인하고 싶습니다.
- 루프에 빠진 경우 종료 조건을 고려해야합니다.
출처
https://stackoverflow.com/questions/7415141