всем привет, начал изучать исключения. Изучаю по видео курсу.
Имеется вот такой пример:
class Program
{
static void Main()
{
int a = 1, n = 2;
try
{
// Попытка деления на ноль.
a = a / (2 - n);
Console.WriteLine("a = {0}", a);
}
catch (Exception e)
{
Console.WriteLine("Обработка исключения.");
Console.WriteLine(e.Message);
}
// Delay.
Console.ReadKey();
}
}
автор, через ObjectBrowser демонстрирует иерархию исключений в c#
и говорит, что когда на строке
a = a / (2 - n);
возникнет исключение типа DevideByZeroException , то при попадании в блок
catch (Exception e)
данный тип исключения приведется к базовому для всех исключений типу Exception (тут я все понял, ведь мы самми в качестве аргумента блока catch указали тип Exception)
затем автор говорит, что можно сделать и так
catch (DevideByZeroException e)
и так
catch ( ArithmeticException e)
У меня вопрос : допустим в данном случае мое исключение типа DevideByZeroException приведется в блоке catch к типу ArithmeticException, а в процессе компиляции все исключения все равно приводятся к типу Exception , или нет ?
Затем автор говорит, что в боке catch лучше не использовать тип исключения SystemException - т.к цитирую "Microsoft сами с первой версии языка подзапутались и тепер желеют, что вообще ввели тип исключчения SystemException " -прав ли автор ? почему (не надо писать это полная ересь - пожалуйста аргументируйте ответ ) - ? Может он что то имел ввиду, Отвечающие могут его перефразировать высказать свои догадкина счет того, что автор иммел ввиду.