1

在我的程序中,我从控制台传递一个参数并将其保存到一个变量中。比方说

const  string FileName= argv[1];

如果没有参数通过,我会得到这个

terminate called throwing an exception

如何捕获异常并向用户显示没有传递参数的正确错误?

4

4 回答 4

3

argc给你的大小argv,所以在访问之前检查它的值argv。请记住,它argv是从零开始的,所以 bounds 也是如此argv[0, ..., arrc - 1]。有用的argv[argc]是,始终设置为 NULL。

访问的无效元素argv未定义的行为

最后,argv[0](如果它不是 NULL)是程序名称。

于 2013-09-13T07:30:35.850 回答
1

在您的情况下,您只需检查 的值argc,因为它包含解析为 argv 的参数数量。

于 2013-09-13T07:30:48.873 回答
1

您的 main 有两个参数 -argvargc. 虽然argv存储传递给您的程序的参数argc存储它们的计数。因此,您可以通过检查argc.

但是请记住,argv 中的第一个值是可执行文件名称,因此如果您想检查参数是否已传递给您的程序,您应该进行如下检查:

if (argc >= 2) {
  ... do stuff ...
}
于 2013-09-13T07:31:05.943 回答
0

您应该检查argc如下:

const  string FileName= (argc < 2)?string():argv[1];

至于您的具体问题,您可以通过 try/catch 块捕获异常,如

try{
exceptionThrowingOperation();
}
catch( ThrownExceptionType& e ){
exceptionHandling(e);
}
于 2013-09-13T07:34:45.223 回答