귀하의 의견으로는 예외 처리를 위해 더 좋은 방법은 if
문 또는 Try/Catch
블록입니까?예외 처리, 명령문 또는 Try/Catch 블록?
아시다시피 모든 예외는 if
문으로 처리 할 수 있습니다.
귀하의 의견으로는 예외 처리를 위해 더 좋은 방법은 if
문 또는 Try/Catch
블록입니까?예외 처리, 명령문 또는 Try/Catch 블록?
아시다시피 모든 예외는 if
문으로 처리 할 수 있습니다.
상황에 따라 다릅니다. 나는 설명하려고 노력할 것이다.
try {
myVar.myFunc();
}
catch(NullPointerException e) {
//bla bla
}
또는
if (myVar != null)
myVar.myFunc();
myVar
는 코드 흐름의 한 부분으로 null
을 할 수있는 경우, 다음 if
문을 사용할 수 있습니다, 그렇지 않으면 당신은을 사용해야합니다
정말 유용했습니다. 고마워요! – Sajad
글쎄, 당신이 이해하는 것은 함수의 반환 값이 SUCCESS 또는 FAILURE가 될 것이라는 if/else 문을 의미하며 실제 모든 작업은 함수의 인수에서 수행됩니다.
이것은 예외가없는 C 스타일의 코딩입니다.
자바에서는 참조 (또는 포인터)로 요소를 전달할 수 없으므로이 방법은 문제가 있습니다 (매우 우아하지 않은 int
을 반환하는 메서드에 대한 래퍼를 만들어야 함). 불필요한 것들을 우아하게합니다.
int calcSomething(int arg1, int arg2, int* result) {
//calcualtions
if (...) return FAILURE;
*result = ...
return SUCCESS;
}
을 그리고 코딩 환경은 다음과 같습니다 : -
예는 C 스타일의 코드는 할 수
if (calcSomething(...) == FAILURE) { handleError(); }
주 - 접근 방식은 예를 들어, 자바에서 완전히 diasppear하지 않았다 Collection#add()
A가 반환 boolean
은 작업이 성공했는지 여부를 나타냅니다. false
값이 실제 오류가 아닌 작업에 주로 사용됩니다. 더 이상 수행 할 필요가 없음을 나타냅니다.
"오류"가 차단 될 때마다 (오류 처리를 위해 예외를 사용함) 훨씬 더 읽기 쉽고 코드 유지 관리가 용이합니다. 그것은 단지 표시 일뿐입니다 (eaxmple - 요소가 이미 세트에 있음) - 반환 값의 부울은 정상적으로 처리 될 수 있습니다.
정말 유용했습니다, 고마워요! – Sajad
그건 실수 였어, 편집 된 – Sajad
아마 @APoliteBoy는 무엇을 의미 했는가? 모든 예외는'If' 문을 사용하여 처리 될 수 있습니까? – TheWhiteRabbit
'try catch '문과'if' 문이 처리하는 동일한 예외에 대한 예제를 제공해 주시겠습니까? –