Шаг 110 - Ловим ошибку переполнения

По умолчанию мы не может отлавливать ошибку переполнения. Смотрим пример:

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. В результате сложение будет получено явно большее число. Но мы с Вами об этом не узнаем.

gif/110_1.gif (2203 b)

Для организации проверки подобных ситуаций есть ключевое слово 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); 
		
	}
}

И теперь в результате выполнения операции будет сгенерировано исключение.

gif/110_2.gif (6743 b)

При необходимости его можно отловить в программе.

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()); 
		}
	}
}

Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 16.10.2001