Lesson 9. 예외처리
예외란? 컴파일(문법) 에러 런타임(실행) 에러 런타임 에러 이유 해결 방법 논리 에러 잘못된 알고리즘이나 프로그램 설계 int x // 세미콜론(;)을 빠뜨린 경우 int sum=0; for(x=0;x<10;x++) // 중괄호({)를 빠뜨린 경우 sum+=i; // 선언하지 않은 변수 i를 사용한 경우 } 런타임(실행) 에러 런타임 에러 이유 해결 방법 논리 에러 잘못된 알고리즘이나 프로그램 설계 프로그램 재작성 시스템 에러 하드웨어나 운영체제 문제 시스템 관리자가 예방 예외 (Exception) 프로그래머의 부주의 프로그램 사용상의 실수 예외 처리
자주 발생하는 예외(Exception) 예외 설명 1 : public class ArrayException1 2 : { 3 : public static void main(String[] args) 4 : { 5 : int[] myInt= new int[10]; 6 : 7 : for(int i=1; i<=10; i++){ 8 : System.out.println("i = "+ i); 9 : myInt[i]= i; 10 : } 11 : } 12 : } ArrayIndexOutOfBoundsException 발생 예외 설명 ArithmeticException 0으로 나누려고 할 때 NullPointException 객체를 생성하기 전에 사용하려고 할 때 NegativeArraySizeException 배열의 크기를 음수로 줄 때 ArrayIndexOutOfBoundsException 첨자가 배열의 크기 범위를 벗어날 때 SecurityException 애플릿이 보안을 위반했을 때
예외의 종류
try와 catch try{ // 예외가 예상되는 부분 }catch(Exception형1 e){
try-catch 예제 1 : public class ArrayException2 2 : { 3 : public static void main(String[] args) 4 : { 5 : int[] myInt= new int[10]; 6 : 7 : for(int i=1; i<=10; i++){ 8 : System.out.println("i = "+ i); 9 : 10 : try{ 11 : myInt[i]= i; // 예외가 발생할 가능성이 있는 위치 12 : }catch(ArrayIndexOutOfBoundsException e){ 13 : System.out.println("배열의 첨자를 다시 설정합니다."); 14 : i= -1; // -1로 재설정 15 : } 16 : } 17 : } 18 : }
finally try{ // 예외가 예상되는 부분 }catch(Exception형 e){ // 무조건 실행하고 싶은 부분 } try{ while(i<a.length) // 배열의 원소수만큼 반복 { System.out.print(" "+ a[i]); // 배열의 원소 출력 i++; } }finally{ // 반드시 실행되는 부분 System.out.println(" [배열끝]");
throw와 throws 1 : public class ThrowException 2 : { 3 : public static void main(String[] args) throws ArithmeticException // 예외 발생 선언 4 : { 5 : int x, y, z; 6 : x= 4; 7 : y= z= 0; 8 : 9 : try{ 10 : z= x/y; // 0으로 나누면 예외 발생 11 : }catch(ArithmeticException e){ 12 : throw(e); // 예외 발생 13 : } 14 : } 15 : }
예외 만들기 Exception 클래스를 상속하여 정의 throw로 예외 발생 try-catch에서 예외처리 public class MyException extends Exception // 직접 정의한 예외 { // ... } throw로 예외 발생 MyException e= new MyException(); throw e; try-catch에서 예외처리 try{ // 예외가 예상되는 부분 }catch(MyException e){ // 예외처리
예외처리 연습* 교재 290p. ~ 292p. MyException.java MyOtherException.java MySubException.java MyExceptionTest.java 인수 실행 방법 java MyExceptionTest one java MyExceptionTest one java MyExceptionTest 0 1 java MyExceptionTest 1 99 java MyExceptionTest 99 2 java MyExceptionTest 2 3 java MyExceptionTest 3