CODE/JAVA1

ExceptionHandling

maskan 2021. 1. 28. 13:52
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class ExceptionHandling {

	public static void main(String[] args) {
		/*
		 * 에러
		 * - 컴파일 에러 : 컴파일 시에 발생되는 에러 (빨간줄)
		 * - 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것(버그)
		 * - 런타임 에러 : 실행시에 발생되는 에러
		 * 
		 * 런타임 에러
		 * - 런타임 에러 발생시 발생한 위치에서 프로그램이 비정상적으로 종료된다.
		 * - 에러 : 프로그램 코드에 의해 수습될 수 없는 심각한 오류(처리 불가)
		 * - 예외  : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류(처리 가능)
		 * 
		 * 예외
		 * - 모든 예외는 Exception 클래스의 자식 클래스이다.
		 * - RuntimeException 클래스와 그 자식들은 예외처리가 강제되지 않는다.
		 * - [RuntimeException 클래스와 그 자식들을 제외한]
		 *    Exception 클래스의 자식들은 예외처리가 강제된다.
		 * 
		 * 예외처리(try-catch)
		 * - 예외처리를 통해 프로그램이 비정상적으로 종료되는 것을 방지할 수 있다.
		 * - try {} catch(Exception e){}
		 * - try 블럭 안의 내용을 실행 중 예외가 발생하면 catch로 넘어간다.
		 * - catch의 ()안에는 처리할 예외를 지정해줄 수 있다.
		 * - 여러 종류의 예외를 처리할 수 있도록 catch는 하나 이상 올 수 있다.
		 * - 발생한 예외와 일치하는 catch 블럭 안의 내용이 수행된 후 try-catch를 빠져나간다.
		 * - 발생한 예외와 일치하는 catch 가 없을 경우 예외는 처리되지 않는다.
		 */
		try{
		int result = 10 / 0;
		System.out.println(result);
		}catch(ArithmeticException | IndexOutOfBoundsException e){
			
			//- 수학적으로 계산되지 않는다 - 인덱스의 범위가 배열을 벗어났다
								//둘 중 하나의 예외가 발생했을 때 변수 e에 입력
			e.printStackTrace(); //에러메시지를 출력한다.
		} catch (NullPointerException e) {
			// 널값을 참조할 때의 예외 처리
		} catch (Exception e) {
			// 모든 예외를 처리
		}
		int[] arr = new int[5];
		System.out.println(arr[5]);

		String str = null;
		System.out.println(str.charAt(1));
		test1();
	}
	private static void test1() {
		test2();
	}

	private static void test2() {
		/*
		 * CallStack : 일방향. 
		 * 
		 * |			|
		 * |	test2	|  <<예외 발생
		 * |	test1	|
		 * |____main____|
		 */
		
//		System.out.println(10/0);
		try {
			new FileInputStream("");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}

'CODE > JAVA1' 카테고리의 다른 글

ThrowsException  (0) 2021.01.28
ThrowException  (0) 2021.01.28
ExtendsAnimal  (0) 2021.01.28
Interface  (0) 2021.01.28
Starcraft  (0) 2021.01.28