在我的程序中,我从控制台传递一个参数并将其保存到变量中。我们说
const string FileName= argv[1];
如果没有参数传递我得到这个
terminate called throwing an exception
如何捕获异常并向用户显示没有传递参数的正确错误?
答案 0 :(得分:3)
argc
为您提供argv
的大小,因此请在访问argv
之前检查其值。请记住,argv
从零开始,因此具有范围argv[0, ..., arrc - 1]
。有用的是,argv[argc]
始终设置为NULL。
访问argv
的无效元素是未定义的行为。
作为最后的评论,argv[0]
(如果它不是NULL)是程序名称。
答案 1 :(得分:1)
在你的情况下,你应该检查argc
的值,因为它包含了被解析为argv的参数数量。
答案 2 :(得分:1)
您的主要有两个参数 - argv
和argc
。当argv
存储传递给您的程序argc
的参数时,它们会存储它们的计数。因此,您可以通过检查argc
的值来检查是否为您的程序提供了参数。
请记住,argv中的第一个值是可执行文件名,因此如果要检查参数是否已传递给程序,则应检查:
if (argc >= 2) {
... do stuff ...
}
答案 3 :(得分:0)
您应该检查argc
,如下所示:
const string FileName= (argc < 2)?string():argv[1];
至于您的具体问题,您可以通过try / catch块捕获异常,如
try{
exceptionThrowingOperation();
}
catch( ThrownExceptionType& e ){
exceptionHandling(e);
}