Derived exceptions must appear before base class exceptions

image_pdfimage_print

/*
C#: The Complete Reference
by Herbert Schildt

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/

// Derived exceptions must appear before base class exceptions.

using System;

// Create an exception.
class ExceptA : ApplicationException {
public ExceptA() : base() { }
public ExceptA(string str) : base(str) { }

public override string ToString() {
return Message;
}
}

// Create an exception derived from ExceptA
class ExceptB : ExceptA {
public ExceptB() : base() { }
public ExceptB(string str) : base(str) { }

public override string ToString() {
return Message;
}
}

public class OrderMatters {
public static void Main() {
for(int x = 0; x < 3; x++) { try { if(x==0) throw new ExceptA("Caught an ExceptA exception"); else if(x==1) throw new ExceptB("Caught an ExceptB exception"); else throw new Exception(); } catch (ExceptB exc) { // catch the exception Console.WriteLine(exc); } catch (ExceptA exc) { // catch the exception Console.WriteLine(exc); } catch (Exception exc) { Console.WriteLine(exc); } } } } [/csharp]