230303 JAVA_Exception

Myung A Lee·2023년 3월 6일
0

JAVA

목록 보기
9/13
post-thumbnail

JAVA

예외 Exception

사용자의 오조작이나 외부 문제로 발생하는 오류

  • 파일을 읽어오는 도중 network 사정으로 파일이 깨졌다.
  • 입력을 5개 넣으라고 했는데 사용자가 8개를 넣었다.
  • 숫자형 변수를 입력하는 칸에 문자를 입력했다.

에러 Error
문법이나 메모리 사용 문제로 실행에 문자가 생겨 발생하는 오류

  • 내가 만든 method에서 숫자형 변수에 문자열 데이터를 넣었다.
  • 선언하지 않은 method를 호출 했다.

일반 예외 (Exception)

Compile Time에 실행 되는 exception, coding 중에 알 수 있으며 실행 되지 않고 Error Message를 console에 출력한다.
JVM 에서 필요하다고 판단하면 자동으로 예외처리를 해준다.

실행 예외 (Runtime Exception)

Run time 에 실행 되는 Exception으로 실행해 보아야 할 수 있다.

Run Time Exception 종류

  • NullPointException : 객체가 없는 상태에서 객체를 사용할 경우 발생하는 오류
  • ArrayIndexOutofBoundException : 배열 인덱스 범위를 초과하여 사용할 경우 발생하는 오류
  • NumberFormatException : 숫자 변환 시 문자가 포함되어 있는 경우
  • ClassCastException : 매개 값으로 받은 타입의 종류를 알 수 없을 경우

예외 처리

Exception은 불가피한 외부 문제로 발생하므로 예외 처리를 통해 프로그램이 정지 하지 않도록 해야만 한다.
예외 처리 방법으로는 try-catch와 throws 두가지 방법이 있다.

throws

작업을 지시한 method로 예외에 대한 책임을 넘긴다는 의미로 프로그램 시작점에서도 throws를 할 경우 JVM에서 처리하게 된다. (예외 내용을 콘솔로 출력 )

protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
			throws ServletException, IOException {}

Try-Catch

문제 발생시 스스로 해결하는 것

try{
	예외 발생 가능한 코드 ;
}catch (Exception e){
	예외가 발생하면 실행 될 코드 ;
}finally{
	예외에 상관없이 항상 실행 되어야 할 코드;
}

다중 예외 처리

Multi catch 또는 OR Exception을 사용한다.

  • 여러가지 예외를 처리하는 방법 1
		try {
			dis.forward(req, resp); // 이 코드를 실행하다가
		} catch (ServletException e) {// 이런 예외가 발생시..
			System.out.println("서버와 통신과정에서 예외 발생");
		} catch (IOException e) {// 다른 예외 발생시...
			System.out.println("외부와 데이터 교환중에 예외 발생");
		}
  • 여러가지 예외를 처리하는 방법 2 : multiCatch
		try {
			dis.forward(req, resp); // 이 코드를 실행하다가
		} catch (ServletException | IOException e) {// 둘 중하나의 예외 발생시 한곳에서 처리
			System.out.println(e.toString());
		} 
  • 여러가지 예외를 처리하는 방법 2 : 다형성을 활용
    모든 자식은 부모의 타입에 들어갈 수 있기 때문에 최상위 클래스인 Exception에 다~ 넣을 수 있다.
try {
			dis.forward(req, resp); 
		} catch (Exception e) {
			System.out.println(e.toString());
		} 

예외 생성

기존 예외 이외에도 새로운 예외를 만들 수 있지만 Exception|RunTimeException 클래스를 상속 받아야만 한다.

0개의 댓글