Restituzione di un’eccezione personalizzata

Sto cercando di implementare la mia class Exception in C #. A tale scopo ho creato una class CustomException derivata da Exception.

class CustomException : Exception { public CustomException() : base() { } public CustomException(string message) : base(message) { } public CustomException(string format, params object[] args) : base(string.Format(format, args)) { } public CustomException(string message, Exception innerException) : base(message, innerException) { } public CustomException(string format, Exception innerException, params object[] args) : base(string.Format(format, args), innerException) { } } 

Quindi lo uso

 static void Main(string[] args) { try { var zero = 0; var s = 2 / zero; } catch (CustomException ex) { Console.Write("Exception"); Console.ReadKey(); } } 

Mi aspetto che ottenga la mia eccezione, ma tutto quello che ottengo è una DivideByZeroException standard. Come posso rilevare un’eccezione per zero utilizzando la mia class CustomException? Grazie.

Non è ansible modificare magicamente il tipo di eccezione generata dal codice esistente.

Devi throw tua eccezione per essere in grado di prenderlo:

 try { try { var zero = 0; var s = 2 / zero; } catch (DivideByZeroException ex) { // catch and convert exception throw new CustomException("Divide by Zero!!!!"); } } catch (CustomException ex) { Console.Write("Exception"); Console.ReadKey(); } 

Prima di tutto, se vuoi vedere la tua eccezione, dovresti throw da qualche parte nel tuo codice:

 public static int DivideBy(this int x, int y) { if (y == 0) { throw new CustomException("divide by zero"); } return x/y; } 

poi:

 int a = 5; int b = 0; try { a.DivideBy(b); } catch(CustomException) { //.... }