2013년 8월 8일 목요일

Java 예외처리

1.Throwable 클래스.

  모든 예외의 슈퍼클래스이다.
  Exception 과 Error 클래스로 나누어진다.
  Error 클래스의 정의된 예외는 기본적으로 Runtime 때 jvm에의해 감지되며
  개발자는 컴파일타임에 발생되는 Exception에 대해서 예외처리를 해주어야한다.

2. 예외처리의 목적
  프로그램은 예외가 발생하면 그로부터 다음 명령을 실행하지 않는다.
  따라서 프로그램이 강제 종료되는 문제가 발생되는데. error 는 컴파일시에
  컴파일러가 감지 하지 않기때문에 전적으로 JVM에 의해 발견되지만 Exception이 발생
  할수있는 부분이 컴파일러에 의해 감지되면 아얘 컴파일이 되지 않기때문에 발생가능
  한 예외는 개발자의 핸들링을 필요로 한다.

3. Exception 예외처리 방법
  1. Exception 클래스의 sub 클래스로 정의된 여러 가지 다양한 Exception 이 있는데
     첫번째 방법으로 직접 try catch finally 구문을 이용한 처리 방법이 있다.
   
컴파일러가 FIleNotFoundException 을 감지하였다.
위에 소스를 보면 aaa.txt파일에 입력을 하기위한 객체를 
연결했지만 aaa.txt파일이 없을경우에 대한 예외를 감지한내용이다.

try catch 블럭을 이용 예외발생지점을 try구문에 넣고 예외가 발생하면
해당 예외클래스에 대한 객체나 catch 영역에 파라미터로 전달되는데
printStackTrace() 메소드,즉 발생원인을 콘솔창에 출력해주는
기능을 하진 메소드를 해당 객체에서 호출하였다.
만약 예외가 발생되지 않는다면 catch 블럭은 수행하지않는다.
catch 블럭다음 finally 블럭이 올시 예외처리에 상관없이 finally 블럭은
무조건적으로 수행한다.

   2. Throws 를 이용 예외발생 블럭 메소드를 호출한영역으로 예외 클래스의 객체를
      파라미터로 전달한다.
throws (던지기) 를 이용 예외발생지점을 호출한 곳으로 발생클래스
객체를 파라미터로 전달한다. 지금 현재 main메소드에서 발생
했으므로 jvm에 객체가 전달됨.
만약 다른 메소드나 클래스에서 받게되고 예외처리를 해당 지역에서
해주었다면 전달되는 객체를 받아 개발자의 방법에 따라
처리 할수 있게된다.

   3. 1번방법과 2번방법을 합한 것이 세번째 방법인데 방법은 똑같다 다만 개발자 본인이
       예외를 처리하여 프로그램 종료를 막고 예외처리 블록을 호출한곳에 예외가 발생했
       다는 메세지를 전달하고자 할때 사용한다.

댓글 없음:

댓글 쓰기