По умолчанию мы не может отлавливать ошибку переполнения. Смотрим пример:
using System; class MainClass { public static void Main(string[] args) { byte b1=250; byte b2=250; byte c; c=(byte)(b1+b2); Console.WriteLine(c); } }
Максимальный размер byte - 254. В результате сложение будет получено явно большее число. Но мы с Вами об этом не узнаем.
Для организации проверки подобных ситуаций есть ключевое слово checked. Давайте посмотрим пример.
using System; class MainClass { public static void Main(string[] args) { byte b1=250; byte b2=250; byte c; c=checked((byte)(b1+b2)); Console.WriteLine(c); } }
И теперь в результате выполнения операции будет сгенерировано исключение.
При необходимости его можно отловить в программе.
using System; class MainClass { public static void Main(string[] args) { byte b1=250; byte b2=250; byte c; try { c=checked((byte)(b1+b2)); } catch(System.OverflowException e) { Console.WriteLine(e.ToString()); } } }