eh2.c

来自「this is a gcc file, you can download it 」· C语言 代码 · 共 75 行

C
75
字号
// Special g++ Options: -fexceptions// excess errors test - XFAIL a29k-*-* sparc64-*-elf arm-*-pe#include <cstdlib>#include <iostream>class Vector {private:  int *p;  int sz;public:  // Exception class  class Range     {  private:    int value_i;  public:    Range( int i ) { value_i = i; };    int value() { return value_i; };  };  Vector( int s );  ~Vector();  int  size() { return sz; };  int& operator []( int i );};Vector::Vector(int s) {  sz = s;  p = new int[sz];}Vector::~Vector() {  delete [] p;}int&Vector::operator [](int i) {  if (0<=i && i<sz) {    return p[i];  } else {    throw Range( i );  }}void crash(Vector& v ) {  v[v.size()+10];  // Triggers range error!}void do_something(Vector& v) {  crash( v );}voidf(Vector& v) {  try {    do_something( v );  } catch (Vector::Range& r) {    std::cout << "Invalid vector range " << r.value()      << " caught in f()" << std::endl;    std::exit(0);  }}main() {  Vector v(10);  f( v );  return 1;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?