1. 특정 예외 포착
항상 가장 구체적인 예외를 먼저 포착하세요. 이는 정확한 문제를 식별하고 적절하게 처리하는 데 도움이 됩니다.
try { // Code that may throw an exception } catch (FileNotFoundException e) { // Handle FileNotFoundException } catch (IOException e) { // Handle other IOExceptions }
2. 빈 캐치 블록 피하기
빈 catch 블록은 오류를 숨기고 디버깅을 어렵게 만들 수 있습니다. 항상 예외를 기록하거나 조치를 취하십시오.
try { // Code that may throw an exception } catch (IOException e) { e.printStackTrace(); // Log the exception }
3. 정리를 위해 최종 블록 사용
finally 블록은 예외 발생 여부에 관계없이 리소스 닫기와 같은 중요한 코드를 실행하는 데 사용됩니다.
BufferedReader reader = null; try { reader = new BufferedReader(new FileReader("file.txt")); // Read file } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } }
4. 던질 수 있는 것을 잡지 마세요
OutOfMemoryError.
와 같이 포착할 수 없는 오류가 포함되어 있으므로 Throwable 포착을 피하세요.
try { // Code that may throw an exception } catch (Exception e) { e.printStackTrace(); // Catch only exceptions }
5. 예외를 올바르게 기록
System.out.println을 사용하는 대신 Log4j 또는 SLF4J와 같은 로깅 프레임워크를 사용하여 예외를 기록합니다.
private static final Logger logger = LoggerFactory.getLogger(MyClass.class); try { // Code that may throw an exception } catch (IOException e) { logger.error("An error occurred", e); }
6. 필요한 경우 예외 다시 발생
경우에 따라 예외를 기록하거나 일부 작업을 수행한 후 예외를 다시 발생시키는 것이 더 좋습니다.
try { // Code that may throw an exception } catch (IOException e) { logger.error("An error occurred", e); throw e; // Rethrow the exception }
7. 다중 캐치 블록 사용
Java 7 이상에서는 단일 catch 블록에서 여러 예외를 포착할 수 있습니다.
try { // Code that may throw an exception } catch (IOException | SQLException e) { e.printStackTrace(); // Handle both IOException and SQLException }
8. 제어 흐름에 대한 예외 남용 방지
일반적인 제어 흐름에는 예외를 사용하면 안 됩니다. 이는 예외적인 조건을 위한 것입니다.
// Avoid this try { int value = Integer.parseInt("abc"); } catch (NumberFormatException e) { // Handle exception } // Prefer this if (isNumeric("abc")) { int value = Integer.parseInt("abc"); }
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3