692просмотров
40.9%от подписчиков
13 сентября 2025 г.
Score: 761
🖥 Ключевые слова checked и unchecked Имеется средство, связанное с генерированием исключений, возникающих при переполнении в арифметических вычислениях. Как известно, результаты некоторых видов арифметических вычислений могут превышать диапазон представления чисел для типа данных, используемого в вычислении. В этом случае происходит так называемое переполнение. Допускается указывать, будет ли в коде генерироваться исключение при переполнении, с помощью ключевых слов checked и unchecked. Так, если требуется указать, что выражение будет проверяться на переполнение, следует использовать ключевое слово checked, а если требуется проигнорировать переполнение — ключевое слово unchecked. В последнем случае результат усекается, чтобы не выйти за пределы диапазона представления чисел для целевого типа выражения. У ключевого слова checked имеются две общие формы. В одной форме проверяется конкретное выражение, поэтому она называется операторной. В другой форме проверяется блок операторов, поэтому она называется блочной. Ниже приведены обе формы:
checked(выражение) checked
{ // Проверяемые операторы // ...
} Если вычисление проверяемого выражения или блока приводит к переполнению, то генерируется исключение OverflowException. У ключевого слова unchecked также имеются две общие формы. Их синтаксис имеет ту же основу:
unchecked(выражение) unchecked
{ // Операторы, для которых переполнение игнорируется // ...
} Если же в непроверяемом выражении или блоке происходит переполнение, то результат его вычисления усекается. Используем unchecked в одном выражении:
int maxInt = int.MaxValue;
int uncheckedResult = unchecked(maxInt + 1);
Console.WriteLine(uncheckedResult); Вывод с урезанным результатом:
-2147483648 Используем checked для всего блока операторов:
checked
{ try { int maxInt = int.MaxValue; int checkedResult = maxInt + 1; Console.WriteLine(checkedResult); } catch (OverflowException e) { Console.WriteLine($"Переполнение: {e.Message}"); }
} Вывод:
Переполнение: Arithmetic operation resulted in an overflow. Использовать checked уместно там, где переполнение может привести к критическим ошибкам в логике нашего приложения. #Полезно #Exception #TryCatch