You must be running the program, not just compiling. When running the program and typing 0, the exception shown as an exception not dealt with by the visual studio debug is generated.
As I commented it seems to me that you are trying to use exception in the wrong way, that might even consider an XY problem.
This problem should be solved simply with a IF
:
public static void Main()
{
int numero;
Console.WriteLine("Informe um número");
string line = Console.ReadLine();
//string line = "0"; //Simula que o usuário digitou 0 na linha do console.
if (int.TryParse(line,out numero))
{
if (numero != 0)
{
Console.WriteLine("5 dividido por " +numero+ " é: " + (5/numero));
}
else
{
Console.WriteLine("Não é possível dividir por 0");
}
}
else
{
Console.WriteLine("Valor informado não pode ser convertido para inteiro.");
}
}
Put in the .Netfiddle
But if you want to use Exception (for teaching purposes), this code would look like this:
public static void Main()
{
int numero;
Console.WriteLine("Informe um número");
string line = Console.ReadLine();
//string line = "0"; //Simula que o usuário digitou 0 na linha do console.
if (int.TryParse(line,out numero))
{
try
{
Console.WriteLine("5 dividido por " +numero+ " é: " + (5/numero));
}
catch (DivideByZeroException)
{
Console.WriteLine("Tentativa de divisão por 0");
}
catch (ArithmeticException)
{
Console.WriteLine("Erro Aritimético");
}
//...
}
else
{
Console.WriteLine("Valor informado não pode ser convertido para inteiro.");
}
}
I put in the .Netfiddle
I recommend reading: /a/97856/69359 and in this answer has references to other.
Edit:
Back to the point of creating your Exception, Consider the following code:
public class Program
{
public static void Main()
{
int numero;
Console.WriteLine("Informe um número");
string line = Console.ReadLine();
//string line = "0"; //Simula que o usuário digitou 0 na linha do console.
if (int.TryParse(line,out numero))
{
try
{
Console.WriteLine("5 dividido por " +numero+ " é: " + (5/numero));
}
catch (MinhaExceptionDivisaoPorZero ex)
{
Console.WriteLine(ex.Message);
}
catch (DivideByZeroException)
{
Console.WriteLine("Tentativa de divisão por 0");
}
catch (ArithmeticException)
{
Console.WriteLine("Erro Aritimético");
}
//...
}
else
{
Console.WriteLine("Valor informado não pode ser convertido para inteiro.");
}
}
}
public class MinhaExceptionDivisaoPorZero : DivideByZeroException
{
public MinhaExceptionDivisaoPorZero() : base("Você tentou dividir por zero")
{
}
}
This code creates the MinhaExceptionDivisaoPorZero
, but when trying to divide by zero, a DivideByZeroException
and this, is not a MinhaExceptionDivisaoPorZero
(despite the fact that all MinhaExceptionDivisaoPorZero
will be a DivideByZeroException
) soon will not fall into the Exception you expect. For this, should have a code like this (which in turn will be absurdly bad):
///Perdoai o código abaixo. Amém
public class Program
{
public static void Main()
{
int numero;
Console.WriteLine("Informe um número");
//string line = Console.ReadLine();
string line = "0"; //Simula que o usuário digitou 0 na linha do console.
if (int.TryParse(line,out numero))
{
try
{
if (numero != 0)
{
Console.WriteLine("5 dividido por " +numero+ " é: " + (5/numero));
}
else
{
throw new MinhaExceptionDivisaoPorZero(); //Você vai ter que gerar uma exceção
}
}
catch (MinhaExceptionDivisaoPorZero ex)
{
Console.WriteLine(ex.Message); //pra mostrar a mensagem dela. Não é mais fácil só mostrar a mensagem lá em cima ?
}
}
else
{
Console.WriteLine("Valor informado não pode ser convertido para inteiro.");
}
}
}
public class MinhaExceptionDivisaoPorZero : DivideByZeroException
{
public MinhaExceptionDivisaoPorZero() : base("Você tentou dividir por zero")
{
}
}
So I don’t see how you can apply what you’re looking for ValorMuitoBaixoException
does not make sense for a division calculation.
I recommend again reading the link above.
"when compiling gives error", you must be trying to run the program, not compile... and running, it gives error because the code of the program is generating the exception... other than that, it seems to me that you are trying to use Exception the wrong way, for a wrong goal... could even consider this an xy problem: https://en.meta.stackoverflow.com/a/1202/69359
– Rovann Linhalis