예외 처리 (Exception)

이진석·2022년 8월 21일
1
post-thumbnail

20220821

한 번에 끝내는 Java/Spring 웹 개발 마스터


1) ArrayIndexException

package ch08;

public class ArrayIndexException {

	public static void main(String[] args) {
		
		int[] arr = {1,2,3,4,5};
		
		try {
			for(int i=0; i<=5; i++) {
				System.out.println(arr[i]);
			}
		} catch(ArrayIndexOutOfBoundsException e) {
			System.out.print(e.getMessage());
			System.out.println(e.toString());
		}
		
		System.out.println("Hello");
	}
}

  • 배열의 크기보다 더 큰 값을 요구할때 발생하는 오류: ArrayIndexOutOfBoundsException
  • try - catch문을 통해서 예외처리를 해주면, "Index 5 out of bounds for length" 라는 문구로 예외가 처리되고, 이후에 Hello라는 값이 정상적으로 출력되는 것을 볼 수 있다.

2) try - catch - finally

package ch08;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileExceptinonHandling {

	public static void main(String[] args) {

		FileInputStream fis = null;

		try {
			fis = new FileInputStream("a.txt");
			System.out.println("Read");
		} catch (FileNotFoundException e) {
			System.out.println(e);

		} finally {
			if (fis != null) {
				try {
					fis.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			System.out.println("Finally");
		}
		System.out.println("End");
	}
}

  • finally문을 마지막에 추가했는데, finally문은 오류가 생성시 반드시 출력되므로, finally라는 문구는 그대로 출력이 된다.

3) thorw new

package ch08;

public class AutoCloseTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		AutoCloseableObj obj = new AutoCloseableObj();
		
		try(obj) {
			throw new Exception();
			
		} catch(Exception e) {
			System.out.println("exception");
		}
		
		System.out.println("End");
	}

}

  • throw부분을 통해서 강제로 Exception을 발생시키고 try catch문으로 받아서 exception이라고 출력되게 하였다.

4) EX

package ch08;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class ThrowsException {

	public Class loadClass(String fileName, String className) throws ClassNotFoundException, FileNotFoundException {
		
		FileInputStream fis = new FileInputStream(fileName);
		
		Class c = Class.forName(className);
		return c;
	}
	
	public static void main(String[] args) {
		
		ThrowsException test = new ThrowsException();
		
		try {
			test.loadClass("a.txt", "java.lang.String");
			
		} catch (ClassNotFoundException e) {
			System.out.println(e);
		} catch (FileNotFoundException e) {
			System.out.println(e);
		} catch ( Exception e ) {
			
		}
		
		System.out.println("End");
	}
}
profile
혼자서 코딩 공부하는 전공생 초보 백엔드 개발자 / https://github.com/leejinseok0614

0개의 댓글