본문 바로가기

04번. IT 힌트얻기/▶ 자바

[Java] Exception (2/2)


1. 사용자 필요에 의한 에러 처리

<일반적으로 에러를 다루는 방법>
- 사용자가 필요하다고 생각해서 에러처리 구문을 사용하는 경우
- 사용자가 직접 에러 이벤트를 발생시키는 경우(throw)
- 다단계 catch
- 반드시 에러처리를 해주어야 하는 경우
- 에러처리 미루기(throws)


 


2. throw

보통의 경우 try에서 에러가 감지되었을 때 자동으로 이벤트가 발생한다. 이와 반대로 사용자가 직접 에러 이벤트를 생성한 후 이 이벤트를 발생시킬 수도 있다. 이때 사용하는 키워드가 throw이다. 


 


3. 다단계 catch

에러 이벤트는 에러의 종류에 따라 상당히 많은 종류의 이벤트가 존재한다. 하지만 모든 에러 이벤트는 Exception 클래스를 상속받아 만들어지기 때문에 에러 이벤트를 Exception류라고 생각하면 된다. 



4. 의무적인 에러처리

■ 의무적인 에러처리 루틴이 필요한 곳
- 네트워크 입출력
- 데이터베이스 입출력
- 파일 입출력
- 메모리 입출력 

<에러처리를 하지 않았을 경우>
 



<에러처리를 했을 경우>


 


5. 에러 처리 미루기

특정 메서드를 사용할 때 에러처리를 하라는 메시지가 출력되면 무조건 에러처리 구문을 달아주면 된다. 하지만 이런 질문을 던질 수 있다. 내부에서 어떻게 했길래 메서드를 사용하기만 하면 나보고 에러처리를 하래? 그답은 throws에 있다. 즉 이것은 메서드를 사용(호출)하는 사람에게 에러처리를 미루는 효과가 있다. 

예외 처리 미루기의 예(에러가 발생하는 경우)


-> 위의 makeURL()에서 URL객체를 생성할 때 에러처리를 해주어야 한다. 메서드 내에 에러처리를 해주지 않고 메서드를 사용하는 곳에서 에러처리를 미루는 방법으로 메서드의 선언 부분에 throws MalformedURLException을 이용하고 있다. 이렇게 되면 makeURL()을 호출하는 쪽에서 에러처리를 해주어야 한다.

예외 처리 미루기의 예(직접 구현한 케이스) 



--> URL 클래스의 생성자가 에러처리를 하지 않고 미룬 것을 makeURL() 내부에서 처리하지 않고 다시 미루고 있다. 위의 예제는 makeURL() 메서드를 사용할 때 에러처리를 했기 때문에 에러가 발생하더라도 프로그램은 무사히 종료하게 된다.



'04번. IT 힌트얻기 > ▶ 자바' 카테고리의 다른 글

[Java] 자바 JDBC  (0) 2011.12.02
[Java] 자바 Stream  (0) 2011.12.01
[Java] Exception (1/2)  (0) 2011.11.17
[Java] Enumeration 과 Iterator  (0) 2011.11.17
[Java] Collection, Map 계열의 클래스 예제  (0) 2011.11.16