using System; using static System.Console; public class OverFlowTest { // Tamanho máximo de um int static int maxIntValue = 2147483647; static int CheckedMethod() { int z = 0; try { // Vai estourar o limite e vai lanar exceção. z = checked(maxIntValue + 10); } catch (OverflowException e) { WriteLine("CHECKED lançou a exceção: " + e.ToString()); } // o z não teve seu valor reatribuido return z; } static int UncheckedMethod() { int z = 0; try { // Não vai gerar exceção z = maxIntValue + 10; } catch (OverflowException e) { // isso não srá executado WriteLine("UNCHECKED lançou a exceção: " + e.ToString()); } // oi valor de zestará errado por causa do estouro: 2147483647 + 10 é o mesmo que -2147483639. // obviamente você esperava um valor positivo, mas ele vira e começa contar os 10 do menor número possível // se quiser entender mais veja http://pt.stackoverflow.com/q/47724/101 return z; } public static void Main() { WriteLine($"CHECKED tem o valor: {CheckedMethod()}"); WriteLine($"UNCHECKED tem o valor: {UncheckedMethod()}"); } } //https://pt.stackoverflow.com/q/157342/101