以下是关于 c++ 异常处理的问题
suse@linux-qmfx:~/program> cat -n n.cpp
1 #include
2 #include
3 using namespace std;
4 int main(int argc, char argv])
5 {
6 setlocale(LC_ALL,“zh_CN”);
7 int arr[5]={0};
8 try{
9 for(int i=0;i<8;i++)
10 std::cout<<arr<<endl;
11
12 }
13 catch (exception &w) {std::cout<<“error:”<<w.what()<<endl;
14 throw;}
15 return 0;
16 }
suse@linux-qmfx:~/program> g++ -o n n.cpp
suse@linux-qmfx:~/program> ./n
0
0
0
0
0
134515435
6
134515424
suse@linux-qmfx:~/program>
第 13 行、14 行为什么不执行?*
c++ 访问数组,实际上是通过指针进行访问的,指针指向数组的首位置,数组的下标数就是指针的偏移量,指针在访问时不会检测数组是否越界,即便进行越界访问也不会报异常,也就是说你的 catch 根本就没有捕捉到异常。
建议代码用 BBCode 框起来…