Error/Exception
-Error:운영체제나 프로세스에 문제가 생겨서 프로그램적으로 어떤 조치되 취할 수 없는 상황
-OutofMemory
-StackOverflow
-etc,.
<<<<<<<<개발자가 손쓸수 없는 영역
-Exception:프로그램 실행 중에 발생한 문제를 코드를 통해서 체크, 다른 코드들을 보호하기 위한 장치
-ArrayIndexOutofBoundsException
-NumberFormatException
-etc
<<<<<<<<<<<<개발자가 손쓸수 있는 영역
예외의 종류
-checked VS unchecked Exception
-코드를 작성 할 때 컴파일러가 check하는 예외처리 -checked Exception
-주로 JVM과ㅏ 외부 리소스와 통신하는 경우에 처리하도록한다.
-Eclipse와 같은IDE는 자동적으로 체크하는 기능을 가지고 있다.
-컴파일러가 체크하지 않지만 실행할 때 발생하는 Exception - unchecked Exception(ex.사용자가 예상치못한 값을 입력할 경우)
-주로 문자열 작업,배열,숫자처리 등에서 발생한다.
-개발자가 직접 처리해야만 한다.
-예제
import java.util.Scanner;
public class ExceptionEx {
public void doA(){
System.out.println("우선 숫자를 좀 입력해주세요");
Scanner scanner = new Scanner(System.in);
int value=100;
int x = Integer.parseInt(scanner.nextLine());
System.out.println(value/x);
System.out.println("AAAAAAAAAAAA");
System.out.println("AAAAAAAAAAAA");
System.out.println("AAAAAAAAAAAA");
System.out.println("AAAAAAAAAAAA");
}
public static void main(String[] args) {
ExceptionEx ex = new ExceptionEx();
ex.doA();
}
}
----->만일 x값으로 0이나 문자를 입력하는 경우 AAA는 찍지도 않음... 문제있는 코드 아래로는 실행안하는 문제가 발생하므로
문제가 발생할 수 있는 코드부분을 예외처리 해줌으로써 프로그램 멈춤을 방지함.
import java.util.Scanner;
public class ExceptionEx {
public void doA(){
System.out.println("우선 숫자를 좀 입력해주세요");
Scanner scanner = new Scanner(System.in);
int value=100;
try{
int x = Integer.parseInt(scanner.nextLine());
System.out.println(value/x);
}catch(Exception e){
System.out.println("잘못입력이되었다네요..");
e.printStackTrace(); //어느코드에서 잘못되었는지 보여주는 메소드
}
System.out.println("AAAAAAAAAAAA");
System.out.println("AAAAAAAAAAAA");
System.out.println("AAAAAAAAAAAA");
System.out.println("AAAAAAAAAAAA");
}
public static void main(String[] args) {
ExceptionEx ex = new ExceptionEx();
ex.doA();
}
}
------------------->try~catch로 잘못입력된 부분에 대해서는 언급을 해주고 아래코드는 정상적으로 실행시켜줌.
NullPointException(Unchecked)
-객체 자료형에서만 발생
-어떤 변수에 실제 객체의 레퍼런스(리모콘)이 없는 상태에서 변수를 통해서 어떤 작업을 하는 경우
-Java의 경우에는 반드시 '.'에서만 발생한다.
따라서!!!NEP가 발생했을경우 .을 찾으면 된다!
ArrayIndexOutOfBoundsException(Unchecked)
-배열의 인덱스 번호가 배열의 범위를 초과해서 접근하는 경우
-int[] arr ={1,2,3}; //index번호는 0,1,2만 가능
-arr[3]; //실행할 때 문제 발생
NumberFormatException(Unchecked)
-문자나 날짜 데이터를 숫자형태로 변환 할 때 발생하는 Exception
Integer.parseInt(" ");
checked Exception의 원칙
-주로 JVM과 외부의 리소스가 통신을 하는 경우에 일어난다.
-네트워크를 통한 통신
-파일 시스템을 사용하는 작업 등
-checked Exception은 실행하는 데 있어서 외부의 간섭이 일어나는 경우에 일어난다.
-운영체제의 설정이나 상황이 간섭을 일으킬 수 있는 경우
'Not Using > JAVA' 카테고리의 다른 글
자바예제놀이(배열관련) (0) | 2012.02.15 |
---|---|
예제놀이_점수입력받고 평균값내서 학점매기기 (0) | 2012.02.14 |
예외처리! 던지기!!뾰뾷! (0) | 2011.12.21 |
API에서 알아두면 좋을 클래스2 (0) | 2011.12.21 |
API에서 알아두어야할 클래스 (0) | 2011.12.20 |