[C#] 11.3 파생 관계의 예외 잡기

C#의 예외 처리구문에서는 하나의 try 블록 뒤에 여러 개의 catch 블록을 지정할 수 있습니다. 그리고 catch 블록에서는 앞에 배치한 곳에서 예외를 받아서 처리하면 뒤에 있는 catch 블록은 수행하지 않습니다.

예를 들어 try 블록 뒤에 Exception 개체를 받아 처리하는 catch 블록과 SystemException 개체를 받아 처리하는 catch블록을 지정했다고 가정합시다. 기반 형식 변수로 파생 형식 개체를 참조할 수 있기 때문에 어떠한 예외가 발생해도 앞에 배치한 catch 블록에서 예외를 받아 처리하고 뒤에 배치한 catch 블록은 동작하지 않습니다. 따라서 여러 개의 catch 블록을 배치할 때 파생 형식을 처리하는 catch 블록부터 배치해야 합니다.

 

 

테스트를 해 보면 전달하는 값에 따라 수행하는  catch 블록이 다름을 알 수 있습니다. catch 블록의 순서를 변경한 후에 다시 테스트 해 보세요.