예외
예외(exceptional event의 줄임말)는 프로그램이 실행되는 동안 발생하는 오류 또는 예기치 않은 이벤트입니다. 예외가 발생하면 프로그램의 흐름이 중단됩니다. 프로그램이 예외를 처리할 수 있다면 계속 실행될 수 있습니다. 예외가 처리되지 않으면 프로그램을 종료해야 할 수 있습니다.
여러 프로그래밍 언어가 예외를 지원하지만, 사용 방식은 서로 다릅니다. 예를 들어 예외는 Java 언어의 핵심 요소이며 프로그램의 흐름을 제어하는 데 자주 사용됩니다. Java에는 수십 개의 하위 클래스를 포함하는 Exception 클래스가 있으며, 여기에는 TimeoutException, UserException, IOException 등이 있습니다. IOException과 같은 하위 클래스에는 파일을 찾을 수 없거나 문자열의 문자 인코딩을 인식할 수 없을 때 "throw"할 수 있는 FileNotFoundException 및 CharacterCodingException과 같은 더 구체적인 예외가 포함되어 있습니다.
다른 언어에서는 메모리 할당 실패나 시스템 수준 오류와 같은 기본적인 런타임 오류를 포착하는 데만 예외를 사용합니다. 예를 들어 C++ 프로그램은 메모리를 할당할 수 없을 때 bad_alloc 예외를, 운영 체제에서 오류가 발생했을 때 system_error 예외를 throw할 수 있습니다.
예외 처리
잘 작성된 컴퓨터 프로그램은 예외를 확인하고 적절하게 처리합니다. 즉, 개발자는 발생 가능성이 높은 예외를 확인하고 이를 처리할 코드를 작성해야 합니다. 프로그램이 예외를 잘 처리하면 예기치 않은 오류를 감지하고 프로그램을 충돌시키지 않고 관리할 수 있습니다.
예외는 발생할 때 "throw"되고 프로그램의 다른 코드에서 "catch"됩니다. throw 문을 사용해 명시적으로 throw하거나 try 절 안에서 암시적으로 throw할 수 있습니다. 다음은 Java의 "try / catch" 구문 예입니다. 다음 코드는 0으로 나누기를 시도하지만 ArithmeticException 예외를 throw하고 결과로 0을 반환합니다.
1. int a = 11;
2. int b = 0;
3. int result = 0;
4. try {
5. int c = a / b;
6. result = c;
7. } catch(ArithmeticException ex) {
8. result = 0;
9. }
10. return result;
11을 0으로 나누는 5번째 줄에서 예외가 throw되므로 try 문 나머지 부분인 6번째 줄은 실행되지 않습니다. 대신 7번째 줄에서 예외가 catch되고 결과로 0이 반환됩니다.
지식 테스트하기