예외 및 예외 사용 방법 검사
- 6분
이 모듈의 앞부분에서 C#의 런타임 오류를 예외라고 하며 애플리케이션이 크래시를 일으키기 전에 이를 “catch”해야 한다는 것을 배웠습니다. 기억나세요? 애플리케이션이 크래시를 일으키기 전에 예외를 catch하는 것은 애플리케이션 작성보다는 마치 비디오 게임처럼 들립니다. 그렇다면 예외를 “catch”하는 것은 정확히 무엇을 의미할까요? 해당 질문에 대답하기 위해서는 먼저 예외가 무엇인지 자세히 살펴봐야 합니다.
예외란?
다음은 예외란 무엇이며 예외가 C# 애플리케이션에서 사용되는 방법을 설명하는 보다 공식적인 정의입니다.
C#에서는 런타임 시 프로그램의 오류가 예외라는 메커니즘을 사용하여 프로그램 전체에 전파됩니다. 오류가 발생하는 코드에서 예외를 throw하고, 오류를 수정할 수 있는 코드에서 예외를 catch합니다. .NET 런타임이나 프로그램의 코드에서 예외를 throw할 수 있습니다. 예외는 예외에서 파생된 클래스로 표현됩니다. 각 클래스는 예외의 형식을 식별하며 예외에 대한 세부 정보가 들어 있는 속성을 포함합니다.
중요
이 학습에서는 .NET 클래스를 깊이 이해할 필요는 없습니다. 이 정의가 약간 혼란스럽더라도 걱정하지 마세요. 클래스에 대한 깊은 이해 없이도 코드에서 예외를 사용할 수 있습니다.
Microsoft의 설명서에는 예외에 대하여 자세히 설명되어 있습니다. 그러나 이 정의에서는 현재 필요한 정보를 제공합니다. 특히 다음 두 가지를 이해해야 합니다.
- 예외가 무엇인지 이해해야 합니다.
- 애플리케이션에서 예외를 사용하는 방법을 이해해야 합니다.
예외를 추가 기능이 있는 변수로 생각할 수 있습니다. 변수를 사용하여 수행하는 예외와 동일한 형식의 작업을 수행할 수 있습니다. 예를 들면 다음과 같습니다.
- 다양한 형식의 예외를 만들 수 있습니다.
- 예외의 콘텐츠에 액세스할 수 있습니다.
예외를 “throw”하고 “catch”한다는 것은 무엇을 의미하나요?
예외의 정의를 평가하여 “throw” 및 “catch”라는 용어를 설명할 수 있습니다.
정의의 두 번째 문장에는 “오류가 발생하는 코드에서 예외를 throw하고, 오류를 수정할 수 있는 코드에서 예외를 catch합니다.”가 표시됩니다. 이 문장의 첫 번째 부분에서는 코드에서 오류가 발생할 때 .NET 런타임에 의해 예외가 만들어 진다는 것을 알려줍니다. 문장의 두 번째 부분에서는 throw된 예외를 catch하는 코드를 작성할 수 있음을 알려줍니다. 또한 예외를 catch하는 코드를 사용하여 정정 작업을 완료할 수 있으며 오류가 발생한 코드로 인한 상황을 완화할 수 있습니다. 즉, 오류가 발생할 때 애플리케이션을 보호하는 코드를 작성할 수 있습니다.
정의의 두 번째 문장을 평가한 후에는 다음을 알 수 있습니다.
- 코드에서 오류를 생성하면 런타임에 예외가 만들어집니다.
- 예외는 몇 가지 추가 기능이 있는 변수처럼 처리될 수 있습니다.
- 예외에 액세스하고 정정 작업을 수행하는 코드를 작성할 수 있습니다.
정의의 나머지 부분에서는 .NET 런타임이 오류를 감지하면 예외를 생성한다는 것을 알려줍니다. 생성된 예외에는 발생한 오류에 대한 정보가 포함됩니다. 코드는 예외를 catch하고 예외에 저장된 정보를 사용하여 문제를 해결할 수 있습니다.
요약
이 단원에서 기억해야 하는 몇 가지 중요한 사항은 다음과 같습니다.
- 예외는 C#에서 런타임 시 오류를 전파하는 데 사용되며
Exception클래스에서 파생된 클래스로 표시됩니다. - 오류가 발생하는 코드에서 예외를 throw하고, 오류를 수정할 수 있는 코드에서 예외를 catch합니다.
- 예외가 catch되면 코드는 해당 내용에 액세스하고 오류를 완화하기 위한 정정 작업을 수행할 수 있습니다.
- .NET 런타임은 오류를 감지하고 예외에 발생한 오류 유형에 대한 정보가 포함되어 있을 때 예외를 생성합니다.