예외 처리기와 관련하여 질문이 있습니다. 다른 용도로 많은 패키지와 클래스가있는 프로젝트의 구조화 된 코드가 있습니다. 이 코드에는 다양한 유형의 예외를 잡으려고 시도하는 곳이 많이 있습니다. 그들 중 일부를 언급하려면 SAXException
, IOException
, NumberFormatException
, ParserConfigurationException
, RuntimeException
등이 있습니다.Java 글로벌 예외 처리기
예외를 잡는 모든 경우에 스택 추적 만 인쇄합니다. 내가 예외를 우연히 만나는 순간, 나는 스택 추적에서 그것이 발생한 곳의 기능을 알아 내고 그에 따라 수정한다. 코드 크기가 크지 않고 디버깅하기가 쉽지 않기 때문에 예외를 제외하고는 아무 것도하지 않습니다.
이제 제 3 자 개발자가 제공하는 외부 Java 라이브러리를 사용하고 있습니다. 이 라이브러리는 내가 호출 할 수있는 모든 가능한 함수에 대해 예외를 throw합니다. 나는이 라이브러리를 활용하기 위해이 라이브러리에 래퍼를 작성하려고합니다. 그러나, 나는이 라이브러리로 인해 내 코드에서 try/catch 블록을 도처에 발견한다. 예를 들어
내 코드는 다음과 같습니다 -
this discussion에서 언급 한 바와 같이이 경우, 나는 글로벌 예외 핸들러로 전환해야 주어진Class Wrapper
{
public void method1()
{
....
try
{
...
third party library calls...
...
} catch (Exception e) { e.printStackTrace(); }
}
public void method2()
{
....
try
{
...
third party library calls...
...
} catch (Exception e) { e.printStackTrace(); }
}
// ... and so on... there are 50-100 methods like this.
// some are even one-liners.
}
?
내 코드에서 어디에서나 try/catch 블록을 작성하지 않아도됩니까?
또한 기존의 try/catch 블록을 제거해야합니까?
감사합니다.
사용 포켓몬 오류 처리기를 검사 예외를 처리하도록 클라이언트를 강제로하지 않습니다 - 그들 모두를 잡아! 모든 코드를 하나의 try/catch합니다. –
체크 예외를 처리해야합니다.스택 추적을 인쇄하여 예외를 삼키는 것은 패턴이 아닙니다. 실제로 처리해야하거나 처리 할 상위 수준의 클래스에 다시 throw해야합니다. – Perception