Как вы помните, все исключения должны иметь тип
System.Exception
(или производный от него). По сути класс
System.Exception
является базовым для нескольких классов исключений, которые можно применять в вашем
С#-коде. Большинство унаследованных от
System.Exception
классов не добавляют функциональности базовому классу. Тогда зачем было суетиться с производными классами, если они существенно не отличаются от базового? Причина в том, что один блок
try
может иметь несколько блоков
catch,
каждый из которых определяет особый тип исключения (вы это скоро увидите). Это позволяет коду обрабатывать различные исключения в соответствии с их типом.