如何捕获 argv 空异常

How to catch argv null exception?

本文关键字:异常 argv 何捕获      更新时间:2023-10-16

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

const  string FileName= argv[1];

如果没有通过的论据,我得到这个

terminate called throwing an exception

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

argc为您提供argv的大小,因此请在访问argv之前检查其值。请记住,argv是从零开始的,因此argv[0, ..., arrc - 1]边界也是如此。有用的是,argv[argc]始终设置为 NULL。

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

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

你的主有两个参数 - argvargc .argv存储传递给程序的参数argc存储其计数。因此,您可以通过检查 argc 的值来检查是否向程序提供了参数。

但请记住,argv 中的第一个值是可执行文件名称,所以如果你想检查参数是否已传递给你的程序,你应该有一个这样的检查:

if (argc >= 2) {
  ... do stuff ...
}

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

您应该检查argc如下:

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

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

try{
exceptionThrowingOperation();
}
catch( ThrownExceptionType& e ){
exceptionHandling(e);
}