1.예외처리, instance of


예외처리는 자바 작성 하고 실행 할 때에 발생하는 오류를 말한다.


예외는 수없이 많지만 대표적인것 3가지만 설명하자면


- NullPointerException


String data = null;

// ex 돈 안주고 심부름 시킬 경우

data.toString(); // null인 값에 무언가 하려고 할 경우


위와 같이 null값을 넣거나 초기화 하지 않아 null값이 들어가 있는데 참조 또는 호출을 할 경우 발생하는 오류이다.


가장 많이 발생하며 코딩의 논리적 순서나 어딘가에서 실수를 하였을 경우 자주 등장한다.


- ArrayIndexOutOfBoundsException


String[] var = new String[2];

var[0] = "data1";

var[1] = "data2";

// 예외 발생 지점

var[2] = "data3";


배열의 방의 크기는 2인데 3으로 가정 하고 작성하였을 경우 발생하는 오류이다.


- NumberFormatException


String data;

int val;

// "1234" -> 1234

data = "1234";

val = Integer.parseInt(data);

// "1q2w3e" -> 1q2w3e (예외 발생)

data = "1q2w3e";

val = Integer.parseInt(data);

System.out.println(data);


자료형을 잘못 지정하여 발생하는 오류이다.


값을 입력받을때 어떤 형식이 들어올지 예측할 수 없다면 instance of 라는 기능을 사용하여 조건문에 사용하면


구분 할 수 있다. 다음의 예제를 통해 쓰임을 살펴보자


package chap07.exam04.exception;

public class ClassCastingEx {

	public static void main(String[] args) {
		Object value = 1234;
		int intVal = (int)value;
		// 원래 숫자기 때문에 문자열 변환이 안된다.
//		String stringVal = (String)value;
		// 이것을 방지하기 위한 방법
		String strVal;
		
		if(value instanceof String) {
			strVal = (String)value;
		}else {
			strVal = "" + value;
			System.out.println(strVal + "숫자형을 문자로 변환이 불가능 합니다.");
		}
	}

}




2.try catch문


try catch문은 특정 코드 부분에서 예상된 오류가 발생했을 경우 처리할 구문을 작성 할 때에 쓴다.


try{ 진행할 코드 } catch ( 예상되는 오류 코드 ) { 오류 발생 시 작동 할 코드 } 


위와 같이 작성하며 오류코드는 너무 많기 때문에 보통 Exception e와 같이 작성하여 모든 예외를 받는다.



package chap07.exam05.tryCatch;

public class Main {

	public static void main(String[] args) {
		String data1 = "12345";
		String data2 = "asd";
		String data3 = "56789";
		
		try { // 문제가 날 것 같은 예상 지점
			
			int value1 = Integer.parseInt(data1);
			int value2 = Integer.parseInt(data2);
			
		} catch (NumberFormatException e) { // 예외 발생 시
			
			System.out.println("입력된 문자가 숫자로만 구성되었나?");
			System.out.println(e.toString());
			
		} finally { // 예외이던 아니던 무조건 실행
			
			System.out.println("data1 : " + data1);
			System.out.println("data2 : " + data2);
			
		}
	}

}


'개념 및 코딩 > 06.기타' 카테고리의 다른 글

[JAVA]06-06.Generic  (0) 2018.09.03
[JAVA]06-05.Object  (0) 2018.09.03
[JAVA]06-04.String  (0) 2018.09.03
[JAVA]06-03.Throw 예외처리, 커스텀 예외처리  (0) 2018.09.03
[JAVA]06-01.중첩 클래스, 중첩 인터페이스  (0) 2018.09.03

+ Recent posts