예외 처리 및 자원 관리에 관한 질문이 있으며 누구나 의견을 나눌 수 있는지 궁금합니다. 나는 일련의 행동을 수행 할 필요가있다 : 앱 설정을 읽고, 환경을 설정하고, 물건을으로하고 결국 정리하라. 청소는 환경을 파괴하는 작업을 포함하지만 처음부터 성공적으로 설정 한 경우에만 수행해야합니다. 그래서 더 나은 솔루션을 찾기로 결정 조금 못생긴 듯 엉망으로 만들기 전에 청소합니까? finally 블록 내에 정리 코드를 넣을 때
try {
readSettings();
setupEnvironment();
} catch (Exception ex) {
logStackTrace(ex);
displayError(ex);
closeCommThreads();
return;
}
try {
// do stuff
} catch (Exception ex) {
logStackTrace(ex);
displayError(ex);
} finally {
teardownEnvironment();
closeCommThreads();
}
:
여기 내 첫 번째 (그리고 절름발이) 접근 방식입니다. 나는 약간의 배경을 읽었으며 꽤 많은 기사가 더 큰 try/catch
블럭에 투표했고 정리를 위해 finally
을 사용했다.
try {
readSettings();
setupEnvironment();
// do stuff
} catch (Exception ex) {
logStackTrace(ex);
displayError(ex);
} finally {
teardownEnvironment();
closeCommThreads();
}
가 언제 호출 할 수 있도록 내가 teardownEnvironment()
에서 순차적 커플 링을 제거해야이 작동하도록 - 전이나 setupEnvironment()
후 : 그래서 여기 내 두 번째 시도이다 (편집자 : 퍼팅 더의 방법). 이것이 올바른 접근 방법입니까? 나는 설정하기 전에 아래로 찢어지기 위해 약간 별 났다고 느낀다.
편집 :
은 그냥 좀 더 명시 적으로 만들려면 : 나는 여분의teardownEnvironment
내부 검사 포함하여 순차적 커플 링을 제거 -
if (!isSetup()) return;
같은 것을.
중복 질문을 열지 않고 하단의 편리한 '편집'링크를 사용할 수 있습니다.) –
예, 예 - 브라우저의 * 뒷면 *을 사용하여 두 번째로 실수로 게시했습니다./죄송합니다. 이봐, 적어도 마침내 * delete * 버튼을 사용할 기회가 있었음) – lukem00
예, 삭제 버튼으로 인해 내 대답을 쓰지 않고 대신이 게시물을 찾을 수있었습니다. –