我试图捕捉此错误,但此代码不起作用。我试图添加不同的捕捉条件,但似乎都不起作用。是否有可能捕捉此错误?
#include <iostream>
#include <exception>
#include <stdexcept>
void myFunction(int* ptr) {
int y = 3;
}
int main() {
try {
int x = 5;
myFunction(x); // call function with invalid parameter
}
catch (const std::invalid_argument& ia) {
std::cerr << "Invalid argument: " << ia.what() << '\n';
}
catch(const std::exception& e) {
std::cerr << "Invalid conversion error: " << e.what() << '\n';
}
catch(...) {
std::cerr << "Error" << '\n';
}
return 0;
}
错误信息:
main.cpp: In function ‘int main()’:
main.cpp:20:16: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]
20 | myFunction(x); // call function with invalid parameter
| ^
| |
| int
main.cpp:13:22: note: initializing argument 1 of ‘void myFunction(int*)’
13 | void myFunction(int* ptr) {
| ~~~~~^~~
1条答案
按热度按时间qojgxg4l1#
如果你想创建一个指向
x
的指针,你需要在变量前面加上与符号&
,这将给予你一个指向x
的指针。这样做:
现在它就可以工作了,你不需要把它放到一个
try/catch
块中。