using System;
class ExceptionDemo{
public static void Main(){
int[] table = new int[6]{10,11,12,13,14,15};
int idx = 6;
M(table, idx);
}
public static void M(int[] table, int idx){
Console.WriteLine("M(table,{0})", idx);
N(table,idx);
}
public static void N(int[] table, int idx){
Console.WriteLine("N(table,{0})", idx);
try{
P(table,idx);
}
catch (IndexOutOfRangeException e){
// Will not/can no handle here. Raise new exception.
throw new IndexOutOfRangeException("Index out of range");
}
}
public static void P(int[] table, int idx){
Console.WriteLine("P(table,{0})", idx);
Console.WriteLine("Accessing element {0}: {1}",
idx, table[idx]);
}
} | |
Main calls M, ...
M calls N, ...
N calls P, in which the exception
occurs.
In the handler we throw a new and
and fresh exception.
From the outside, the exception appears
to come from N, not P.
The problem is here.
|