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 |