본문 바로가기

JAVA/JAVA

자바 개념 - 예외처리

반응형

** 예외처리

: 프로그램 실행중에 사용자의 부주의로 인한 예기치 않는 상황에 대한 처리



** 예외처리 하는 방법

1. try ~ catch 절에 의해 직접 예외처리하는 방법

2. 메소드명 뒤에 throw 키워드를 붙여 메소드를 호출하는 쪽으로 예외를 전파하는 방법


try{

예외상황이 발생할 만한 문장들...

'예외가 발생된다' 라는 말은 예외클래스의 객체가 생성된다는 말

}catch(예외자료형 변수명){

예외가 발생되었을 때 처리할 문장들...

}


==> 자바는 대체로(일반적으로) 발생할 수 있는 예외상황에 대한 클래스가 이미 정의되어 있다.

==> 예외에 대한 제일 조상클래스 : Exception



** 하나의 try 안에 여러개의 catch가 올수 있다. 다만 범위가 적은 순서대로 와야 한다!

try{

예외상황이 발생할 만한 문장들...

'예외가 발생된다' 라는 말은 예외클래스의 객체가 생성된다는 말

}catch(예외자료형 변수명){

예외가 발생되었을 때 처리할 문장들...

}catch(예외자료형 변수명){

~~~.

}



** Finally

: 예외가 발생하거나 그렇지 않거나 반드시 처리할 문장


try{

예외상황이 발생할 만한 문장들...

'예외가 발생된다' 라는 말은 예외클래스의 객체가 생성된다는 말

}catch(예외자료형 변수명){

예외가 발생되었을 때 처리할 문장들...

}catch(예외자료형 변수명){

~~~.

}finally{

예외가 발생하거나 그렇지 않거나 반드시 처리할 문장

}



** throw 예약어

: 현재 메소드 내에서 예외처리 하기 힘든 경우 호출하는 곳에서 대신 처리 해달라며 양도하는 것

메소드를 호출하는 쪽에서 예외처리를 해야한다.


형식)

public 반환자료형 메서드명([매개변수1, 매개변수...]) throw 예외자료형1, 예외자료형2 {

메소드 내용

}



** RuntimeException

: '사실 어떤 예외는 사용자가 처리 안해도 자바가 알아서 처리해주는게 있고, 어떤 예외는 사용자가 반드시 처리해야만 하는 예외가 있다.' 

이를 'RuntimeException' 이라고 한다.


RuntimeException의 후손들은 사용자가 특별히 예외처리를 하지 않아도 좋다. 

그러나 그 이외의 것들은 반드시 사용자가 예외처리 해야한다.


==> 반드시 예외처리 해야하는 것들의 대표적인 종류

* db에 접근하기 위한 메소드들

* 파일 입출력과 관련한 메소드들

* 네트워크와 관련한 메소드들


예)

db서버에 접속하기 위한 메소드 getConnection은 SQLException을 안고 있기 때문에

반드시 호출하는 쪽에서 예외처리 해야 한다.


public static Connection getConnection(String url, String user, String password) throws SQLException


** 사용자 정의 예외

형식)

class 사용자 정의 예외 클래스 이름 extends Exception{

생성자(String msg){

super(msg);

}

}


** 사용자가 강제로 예외를 발생시키기 위한 키워드(throws와 다름)

형식)

throw new 사용자 정의 예외 클래스 이름();


**throws 는 메소드내에서 예외를 메소드 호출하는 쪽으로 전파하기 위한 키워드

반응형