삼성SDS_멀티캠퍼스/Java

14일 차 예외의 종류

박성우기 2015. 9. 25. 09:05
반응형

# 예외 : 프로그램이 실행중에 종료되게 만드는 원인.

크게 RuntimeException, IOException, Error 로 나뉜다.

# Error : 우리의 잘못이 없는데 프로그램이 죽는것으로 어쩔수 없다. (시스템 상에서 발생하는 치명적인 에러) - 예외처리 대상이 아니다.

- OutOfMemoryError

- AWTError

- ThreadDeath

# RuntimeException : 우리(개발자)가 잘못한것. 잘못 안 할수 있던 것이다.

예외처리의 필수대상은 아니다.

# IOException : 필수 예외처리 대상 !!!! ※중요※

 

# 체크 예외와 비체크 예외

자바 컴파일러는 RuntimeException 은 확인하지 않는다. 그밖의 예외는 모두 처리를 확인한다.

 

# 다형성과 예외

예외도 객체이기 때문에 new 연산자로 생성된다.

try {

}

catch(NumberException e){

//NumberException 하위 클래스의 에러들도 다 잡힘.

}

 

# 예외처리 방법 두가지

 - 직접 처리 방법


import java.util.InputMismatchException;
import java.util.Scanner;

public class Test {
 public static void main(String[] agrs) {

  System.out.println(readString());

 }

 public static String readString() {
  byte[] buf = new byte[100];
  System.out.print("문자열을 입력하시오: ");
  try {
   System.in.read(buf); //read 메소드는 체킹예외인 IOException 을 발생시키기 떄문에 
         //호출시 예외처리를 해주지 않으면 컴파일러가 에러를 알려줌.
  } catch (IOException e) { // 예외처리를 그자리에서 처리.
   System.out.println(e.getMessage());
   e.printStackTrace();
  }
  return new String(buf);
  
 }
}

- 해당문장에 포함된 함수를 호출하는 놈에게 토스

import java.io.IOException;
import java.util.InputMismatchException;
import java.util.Scanner;

public class Test {
 public static void main(String[] agrs) {

  try {
   System.out.println(readString());
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } //함수를 호출 하는 본문에서 처리

 }

 public static String readString() throws IOException { //예외처리 책임전가
  byte[] buf = new byte[100];
  System.out.print("문자열을 입력하시오: ");

  System.in.read(buf); // read 메소드는 체킹예외인 IOException 을 발생시키기 떄문에 호출시 예외처리를 해주지 않으면 컴파일러가 에러를 알려줌.

  return new String(buf);
 }



출처 : http://justbaik.tistory.com/29


반응형