using System;
namespace Articulos.Excepciones.Parte4
{
// Crea una versión personalizada de la excepción
// de división entre cero (0):
public class DivisonPorCeroException : Exception
{
private const int DivisionPorCeroHResult = unchecked((int)0x81234567);
// Asigna un valor a la propiedad HResult heredada:
public DivisonPorCeroException( string mensaje, Exception excepcionAnidada)
: base (string.Format("(HRESULT:0x{1:X8}) {0}", mensaje, DivisionPorCeroHResult),
excepcionAnidada)
{
HResult = DivisionPorCeroHResult;
}
}
public sealed class UsoHResult
{
public static void Main()
{
Console.WriteLine ("\nEjemplo de uso de la propiedad `HResult`\n");
// Genera una excepción de forma intencionada:
try
{
try
{
int cero = 0;
int div = 1 / cero;
}
catch(Exception e)
{
throw new DivisonPorCeroException(
"Excepción por intento de división por cero. Genera una segunda excepción.",
e
);
}
}
catch( Exception e)
{
Console.WriteLine (e.ToString());
}
}
}
}