我正在尝试捕获指针异常。我的代码看起来像这样。我得到“未处理的例外”。我做错了什么? 任何帮助将不胜感激。
#include <iostream>
#include <exception>
using namespace std;
struct Node{
int data;
Node* next;
};
int list_length(struct Node* head){
try{
int i = 0;
while (head->next){
head = head->next;
i++;
}
return i + 1;
}
catch (exception& e){
cout << e.what() << endl;
}
};
int main(void){
struct Node *perr = nullptr;
list_length(perr);
return 0;
}
答案 0 :(得分:5)
这里没有C ++例外。您只需取消引用空指针,即未定义的行为,而不是异常。您应该检查一下,head
在取消引用它之前不是nullptr。可能,你正在使用Windows和Windows异常被抛出。你可以在这里阅读:How to catch the null pointer exception?