1 // { dg-do assemble } 2 // { dg-options "-fexceptions" } 3 // GROUPS passed exceptions 4 // except file 5 // Message-Id: <199311101607.AA11803@hsi86.hsi.com> 6 // From: Grigory Tsipenyuk <grigory@hsi.com> 7 // Subject: exception's bug? 8 // Date: Wed, 10 Nov 1993 11:07:12 -0500 9 10 #include <iostream> 11 12 class X { 13 int *a; 14 int sz; 15 public: 16 class range { }; // exception class X(int s)17 X(int s) { a=new int[sz=s]; } 18 int& operator[](int i); 19 }; 20 21 int& X::operator[](int i) 22 { 23 if (i < 0 || i >= sz) { 24 throw range(); 25 } 26 return a[i]; 27 } 28 29 int main()30main() 31 { 32 X c(10); 33 try { 34 for (int i = 0; i < 12; i++) 35 c[i] = 1; 36 } catch (X::range) { 37 std::cerr << "invalid range\n"; 38 } 39 return 0; 40 } 41