OverflowException
В блоке checked
переполнение int вызывает
OverflowException. В unchecked
значение «переносится» без исключения.
Convert.ToByte(256) тоже бросает
OverflowException. Исключение
наследует
ArithmeticException.
Синтаксис
try
{
checked
{
int res = int.MaxValue + 1;
}
}
catch (OverflowException)
{
}
Пример
Давайте поймаем переполнение в checked:
using System;
class Program
{
static void Main()
{
try
{
checked
{
int res = int.MaxValue + 1;
}
}
catch (OverflowException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Пример
Давайте в unchecked исключения не будет:
using System;
class Program
{
static void Main()
{
int res = unchecked(int.MaxValue + 1);
Console.WriteLine(res == int.MinValue);
}
}
Результат выполнения кода:
True
Пример
Давайте поймаем Convert.ToByte(256):
using System;
class Program
{
static void Main()
{
try
{
Convert.ToByte(256);
}
catch (OverflowException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Смотрите также
-
checked,
который включает проверку переполнения -
ArithmeticException,
базовый тип дляOverflowException -
DivideByZeroException,
другой наследникArithmeticException -
FormatException,
которое связано с разбором, а не переполнением