[C#] 오류와 예외의 차이점이 무엇인가요?

오류와 예외의 차이점이 무엇일까요? 우선 오류는 영문으로 error이며, 예외는 exception입니다. 흔히 오류와 예외라는 단어를 비슷한 뜻으로 사용하는 경우가 있지만, 실제로는 많은 차이가 있습니다. 특히 프로그램에 대해 잘 모르는 경우에는 예외(익셉션) 대신 오류(에러)라고 표현을 많이 하시지요.

저 또한 블로그 자료를 안내할 때, 두 단어를 번갈아 사용하거나, 예외를 오류로 표현하는 편입니다. 익셉션보다는 에러라는 단어로 검색하는 빈도가 높거든요... 😂 이번 시간에는 오류와 예외의 차이에 대해 간단히 알아보도록 하겠습니다.

오류(error)

빌드 오류가 발생했습니다 계속하고 마지막으로 성공한 빌드를 실행하시겠습니까

오류는 프로그램 실행 중 발생할 수 있는 심각하거나 중대한 문제를 뜻합니다. 오류를 가장 흔하게 확인할 수 있는 방법은 컴파일 타임 단계에서 프로그래밍의 문제로 발생하는 것이며 구문 오류가 주된 문제입니다. 컴파일러 오류는 오류코드를 수정하여 리컴파일을 통해 해결할 수 있습니다.

런타임 오류는 프로그램을 사용하는 중에 발생한 치명적인 오류이며, 프로그램 실행을 중단합니다. 오류와 예외의 가장 큰 차이점 중은, 오류는 예외처리를 사용하여 해결할 수 없다는 점입니다. 예외처리와 관련한 사항은 아래의 예외에서 안내해 드리겠습니다.

예외(exception)

예외는 실행 과정에서 예기치 않게 발생하는 문제 상황을 뜻합니다. 다만, 예외는 오류보다는 예상이 가능한 편에 속하며, 예외 처리(exception handling)를 통해 프로그램을 계속적으로 작동이 가능하게 할 수 있습니다. 오히려 의도적으로 예외를 발생시켜 프로그래밍에 활용하는 경우도 있습니다.

예외 처리

예를 들면, 입력한 값이 숫자인지 여부를 확인하기 위해 해당 값을 숫자로 파싱해 보고, '숫자가 아님' 예외가 발생하는 경우 문자로 보는 것이지요. C#에서는 try-catch-finally 구문을 구현하여 예외처리를 진행할 수 있습니다.

void BeomSang()
{
    string p = "a";
    try
    {                
        int i = int.Parse(p);
    }
    catch (Exception ex)
    {
        System.Windows.MessageBox.Show($"{p}는 숫자가 아닙니다! 예외가 발생하였습니다! {Environment.NewLine}{ex.Message}");
    }             
}

예외는 외부적인 요인으로 발생할 수도 있고, 실행하는 환경으로 인해 발생할 수도 있으며, 오류와 마찬가지로 여러 가지 원인이 존재합니다.

오류, 예외 차이점

오류는 코드 컴파일 단계에서 즉각적으로 확인 가능한 중대한 문제, 또는, 프로그램의 정상적인 동작이 더이상 불가능한 예상치 못한 치명적인 문제입니다. 반면, 예외는 오류의 범위를 벗어난 약한 정도의 문제이며, 예외가 발생하더라도 적절한 예외처리를 통해 프로그램이 정상적으로 동작할 수 있도록 할 수 있습니다.

오류와 예외의 공통점은 예상하지 못할 수 있는 프로그램 문제라고 할 수 있으며, 오류와 예외의 차이점은 핸들링이 가능한가, 불가능한가로 구분할 수 있을 것입니다.

댓글