Skip to content

Commit 025e0f0

Browse files
committed
Use specific exception type
1 parent 8a4908a commit 025e0f0

2 files changed

Lines changed: 10 additions & 3 deletions

File tree

include/argparse.hpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,13 @@ namespace argparse
8181
using logic_error::logic_error;
8282
};
8383

84+
class option_error
85+
: public std::logic_error
86+
{
87+
public:
88+
using logic_error::logic_error;
89+
};
90+
8491
inline auto operator|(Handle lhs, Handle rhs) -> Handle
8592
{
8693
return static_cast<Handle>(static_cast<int>(lhs) | static_cast<int>(rhs));
@@ -1603,7 +1610,7 @@ namespace argparse
16031610
{
16041611
if (is_positional())
16051612
{
1606-
throw std::runtime_error("'required' is an invalid argument for positionals");
1613+
throw option_error("'required' is an invalid argument for positionals");
16071614
}
16081615
m_options.required = required;
16091616
return *this;

test/unittest/test_argument_parser.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,8 +317,8 @@ TEST_CASE("Adding a positional argument with required option set results in erro
317317
{
318318
auto parser = argparse::ArgumentParser();
319319

320-
CHECK_THROWS_WITH(parser.add_argument("pos").required(true), "'required' is an invalid argument for positionals");
321-
CHECK_THROWS_WITH(parser.add_argument("pos").required(false), "'required' is an invalid argument for positionals");
320+
CHECK_THROWS_WITH_AS(parser.add_argument("pos").required(true), "'required' is an invalid argument for positionals", argparse::option_error);
321+
CHECK_THROWS_WITH_AS(parser.add_argument("pos").required(false), "'required' is an invalid argument for positionals", argparse::option_error);
322322
}
323323

324324
TEST_CASE("Adding an optional argument with required option does not result in error")

0 commit comments

Comments
 (0)