38 for (
int i = 0; i < exceptions.Length; i++)
40 for (
int j = i + 1; j < exceptions.Length; j++)
43 if (exceptions[i].startIndex < exceptions[j].startIndex &&
44 exceptions[j].startIndex < exceptions[i].endIndex &&
45 exceptions[i].endIndex < exceptions[j].endIndex)
47 throw new InvalidOperationException(
"Partially overlapping try blocks is broken");
50 if (exceptions[i].startIndex <= exceptions[j].startIndex &&
51 exceptions[i].endIndex >= exceptions[j].endIndex &&
52 exceptions[i].ordinal < exceptions[j].ordinal)
54 throw new InvalidOperationException(
"Non recursive try blocks is broken");
59 this.exceptions = exceptions;
64 get {
return exceptions[index]; }
69 get {
return exceptions.Length; }
72 internal void SetFinally(
int index)
74 exceptions[index] =
new ExceptionTableEntry(exceptions[index].startIndex, exceptions[index].endIndex, exceptions[index].handlerIndex, exceptions[index].catchType, exceptions[index].ordinal,
true);