Стандартные исключения

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

Самые важные исключения библиотеки .NET:

Exception
   ApplicationException
       Все пользовательские исключения
   SystemException
       AccessViolationException (несанкционированный доступ к памяти)
       ArgumentException
          ArgumentNullException
          ArgumentOutOfRangeException
       ArithmeticException
          DivideByZeroException (целочисленное деление на 0)
       IndexOutOfRangeException
       InvalidCastException (явное приведение к неправильному типу)
       FormatException 
       NullReferenceException
       OutOfMemoryException
       StackOverflowException
       IOException (пространство имен System.IO)
          FileNotFoundException
          EndOfStreamException

В данном примере порождается ряд стандартных исключений.

procedure DivideByZero;
begin
  var i := 0;
  i := 10 mod i; // деление на 0
end;

procedure IndexOutOfRange;
begin
  var a: array of integer := new integer[10];
  writeln(a[10]);
end;

procedure InvalidCast;
begin
  var i : integer := 2;
  var o: Object := i;
  writeln(real(o));
end;

procedure BadFormat;
begin
  writeln(string.Format('{2}',1));
end;

procedure NullReference;
begin
  var o: Object;
  writeln(o.GetType);
end;

procedure EndOfStream;
begin
  var f := new System.IO.StreamReader('a.txt');
end;

var a: array of procedure := (DivideByZero,IndexOutOfRange,InvalidCast,BadFormat,NullReference,EndOfStream);

begin
  foreach p: procedure in a do
  try
    p();
  except
    on e: Exception do
      writeln(e.GetType.Name);
  end;
end.

Ссылки