You should be running the program, not just compiling. When you run the program and type 0, the exception shown as an exception not treated by the visual studio debug is generated.
As I said it seems to me that you are trying to use exception in the wrong way, which 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.");
}
}
Place in .NETFiddle
But if you want to use Exception (for didactic 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 it in .NETFiddle
I recommend reading: link and in this answer you have references to others.
Edit:
Returning 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 MinhaExceptionDivisaoPorZero
, but when trying to divide by zero, a DivideByZeroException
is generated and this is not a MinhaExceptionDivisaoPorZero
(although all MinhaExceptionDivisaoPorZero
will be DivideByZeroException
) will not soon fall into the Exception you expect. For this, it 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 do not see how to apply what you're wanting, other than the detail that ValorMuitoBaixoException
does not make sense for a division calculation.
I recommend again reading the answer above.