다음과 같은 방법으로 작성된 예외 처리 프로젝트가 있습니다.Java : 예외 처리기
상위 클래스에는 모든 예외 처리 논리가 있습니다. 호출 된 클래스는 예외를 throw하고 호출자 클래스는 적절한 논리를 처리합니다.
이제 호출 된 클래스에 직면 한 문제는 파일과 같이 다른 물건을 엽니 다. 이러한 파일은 예외시 닫히지 않습니다.
그래서이 경우 적절한 예외 처리 방법은 무엇이되어야합니다.
class A
{
private void createAdminClient()
{
try
{
B b = new B();
b.getClinetHandler();
}
catch(CustomException1 e1)
{
}
catch(CustomException2 e1)
{
}
catch(CustomException3 e1)
{
}
catch(CustomException4 e1)
{
}
}
}
class B
{
................
................
getClinetHandler() throws Exception
{
--------------------------
---- open a file----------
--------------------------
----lines of code---------
--------------------------
Exceptions can happen in these lines of code.
And closing file may not be called
--------------------------
---- close those files----
--------------------------
}
}
이것은 원하는 것이 아닙니다. 닫을 수있는 객체는이 코드 블록에서 볼 수 없습니다. – Sean
@Sean 궁극적으로 실행 후 파일을 닫는 방법을 묻는 것처럼 (getClientHandler 메서드에서) 원하는대로 생각합니다. 그러나 당신은 실제로'b' 변수가 보이지 않는다는 점에서 결함을 지적했습니다. –
Hi Teeg, 내가 붙여 넣은 코드 스 니펫은 기본적으로 부모 클래스가 모든 예외 처리 로직을가집니다. 이 경우 closeFiles 및 기타 논리 처리 논리를 처리하는 다른 객체를 처리 할 때이 방법을 선택하면 부모에게 전달해야합니다. – Exploring