본문 바로가기
Web Programming

오류(error)와 예외(exception) / 예외 처리 try-catch

by hyeon'H 2023. 12. 8.
반응형

프로그래밍의 오류의 종류

 프로그램에서 오류가 발생되면 프로그램에서 원치 않는 버그가 발생하거나, 심각하면 실행 중인 프로그램이 종료되기도 한다.
오류의 원인으로는 프로그램 로직에 문제가 있을 수도 있고, 하드웨어에 문제가 있어 오류가 발생할 수도 있다.
실제로 프로그래밍을 할 때 발생하는 오류는 단순 오타부터 시작해서 프로그램의 잘못된 설계로 인한 메모리 펑크까지 범위가 다양하다.

컴파일 에러(compile-time error) : 컴파일 시 발생하는 오류
런타임 에러( runtime error) : 실행 시에 발생하는 오류
논리적 에러(logical error) : 실행은 되자만 의도와 다르게 동작하는 것

컴파일 오류(Compillation Error)

 컴파일 에러는 컴파일 단계에서 오류를 발견하면 컴파일러가 에러를 발생하는 것이다.
대표적인 컴파일 에러로 구문 오류(syntax error)가 있다.

런타임 오류 (Runtime Error)

 앞 글에서 컴파일 에러를 발생을 막아서 문제가 발생하지 않는다고 해도, 프로그램 실행 중에 에러가 발생해서 잘못된 결과를 줄거나, 하드웨어의 문제로 프로그램이 종료될 수 있다. 이것을 실행 오류(runtime error)이다.

논리 오류 (Logic Error)

 이른바 '버그'라고 말한다. 프로그램이 실행되고 작동하는 데는 아무 문제가 없지만 결과가 예상과 달라 사용자가 의도한 대로 작동하지 않는 오류로 프로그램에 사용에 문제가 발생된다. 이러한 논리 오류는 프로그램은 문제없이 실행되어 에러를 알려주지 않는다. 
따라서 논리 오류가 발생하면 프로그램의 전반적인 코드를 체크할 필요가 있다.


오류 (error)와 예외(exception)

프로그래밍을 하다 보면 여러 오류를 만나게 된다.
자바 문법에 맞지 않게 작성한 코드를 컴파일하려고 하면, 컴파일러는 구문 오류인 Syntax error를 발생시키고,
맞게 작성되었다 하더라도 예상치 못한 곳에서 오류는 발생할 수 있다.
이렇게 자바 프로그램에서는 실행 시 발생할 수 있는 오류를 에러(error)예외(exception) 두 가지로 구분한다.

오류(error)

 시스템이 종료되어야 할 수준의 상황같이 수습할 수 없는 심각한 문제를 의미한다.
개발자가 미리 예측하여 방지할 수 없는 것이 대부분이므로, 오류에 대한 처리는 할 수 없다.

error table

예외 (exception)

개발자가 규현 하는 로직에서 발생한 실수나 사용자의 영향에 의해 발생한다.
오류와는 달리 상황에 맞는 예외처리(Exceprion Habdle)를 통해서 개발자가 미리 예측하여 방지할 수 있다.

exception table


예외 처리 (exception handling)

아래의 코드처럼 어떠한 수를 0으로 나눌 수 없기 때문에 오류가 발생할 것이다.

이처럼 우리가 예측가능하고 제어할 수 있는 상황을 예외라고 한다.

int a = 10;
int b = 0;

int c = a/b;
System.out.println(c);

자바에서 예외처리를 하는 일반적인 방법으로는 try-catch문을 사용합니다.
try문에 예외가 발생할 수 있는 코드를 작성하는데, 예외가 발생한다면 catch문으로 이동하고, 예외가 발생하지 않는다면 try문이 실행된 후 try-catch문을 빠져나 온다.

int a = 10;
int b = 0;

try {
    //예외 처리가 필요한 코드
    int c = a/b;	
}catch(ArithmeticException e){
    //예외 발생시 실행될 코드
    System.out.println("Arithmetic Exception 발생");
    e.printStackTrace();//예외 메시지를 콘솔에 출력
}finally {
    //예외 발생 여부와 상관없이 실행될 코드
    System.out.println("종료");
};

 

반응형