Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

SQLException 클래스의 핵심 메소드 총정리

SQLException이란?

SQLException은 JDBC 드라이버 내부 또는 데이터베이스 자체에서 발생할 수 있는 예외입니다. 이러한 예외가 발생하면 SQLException 타입의 객체가 생성되어 catch 블록으로 전달되며, 개발자는 이 객체가 제공하는 메소드들을 통해 오류의 원인을 상세히 파악할 수 있습니다.

전달된 SQLException 객체에는 예외에 대한 추가 정보를 조회할 수 있는 다음과 같은 메소드들이 포함되어 있습니다.

SQLException의 주요 메소드

메소드설명
getErrorCode()예외와 연관된 에러 번호를 반환합니다.
getMessage()JDBC 드라이버가 처리한 오류에 대해서는 드라이버의 오류 메시지를 반환하며, 데이터베이스 오류에 대해서는 Oracle 오류 번호와 메시지를 반환합니다.
getSQLState()XOPEN SQLstate 문자열을 반환합니다. JDBC 드라이버 오류의 경우 유용한 정보가 반환되지 않고, 데이터베이스 오류의 경우 5자리 XOPEN SQLstate 코드가 반환됩니다. 이 메소드는 null을 반환할 수도 있습니다.
getNextException()예외 체인(exception chain)에서 다음 Exception 객체를 반환합니다.
printStackTrace()현재 예외(throwable)와 그 백트레이스(backtrace)를 표준 에러 스트림에 출력합니다.
printStackTrace(PrintStream s)해당 throwable과 백트레이스를 사용자가 지정한 PrintStream에 출력합니다.
printStackTrace(PrintWriter w)해당 throwable과 백트레이스를 사용자가 지정한 PrintWriter에 출력합니다.

활용 예제

아래는 실제 JDBC 프로그래밍에서 SQLException을 처리하는 일반적인 방식입니다.

try {
    // 데이터베이스 작업 수행
} catch (SQLException e) {
    System.out.println("에러 메시지: " + e.getMessage());
    System.out.println("에러 코드: " + e.getErrorCode());
    System.out.println("SQL 상태: " + e.getSQLState());
    e.printStackTrace();
}

이처럼 여러 메소드를 조합하여 사용하면 드라이버 오류인지, 데이터베이스 오류인지를 구분하고 원인을 보다 정확하게 진단할 수 있습니다. 또한 getNextException()을 반복적으로 호출하면 연쇄적으로 발생한 여러 예외를 모두 확인할 수 있어 복잡한 트랜잭션 오류 분석에도 유용합니다.