PLCnext API Documentation 23.6.0.37
ArgumentNullException.hpp
1
2//
3// Copyright PHOENIX CONTACT Electronics GmbH
4//
6#pragma once
8#include "Arp/System/Commons/Exceptions/ArgumentException.hpp"
9#include <type_traits>
10
11namespace Arp { namespace System { namespace Commons
12{
13
16{
17public: // construction/destruction
18 template<typename... Args>
19 ArgumentNullException(const char* message, const Args& ... args);
20 ArgumentNullException(const String& message);
22 ArgumentNullException(const String& message, const Exception& innerException);
23 ArgumentNullException(String&& message, Exception&& innerException);
24 ArgumentNullException(const ArgumentNullException& arg) = default;
26 virtual ~ArgumentNullException(void) = default;
27
28public: // static factory methods
29 static ArgumentNullException Create(const char* paramName);
30 static ArgumentNullException Create(const char* paramName, const Exception& innerException);
31
32protected: // overridden operations
33 Exception::Ptr Clone(void)const override;
34
35private: // deleted methods
36 ArgumentNullException& operator=(const ArgumentNullException& arg) = delete;
37
38private:
39 static const char* const defaultMessage;
40};
41
43// inline methods of class ArgumentNullException
44
46template<typename... Args>
47inline ArgumentNullException::ArgumentNullException(const char* message, const Args& ... args)
48 : ArgumentException(ExceptionTypeId::ArgumentNull, String::Format(message, args...))
49{
50}
51
54 : ArgumentException(ExceptionTypeId::ArgumentNull, message)
55{
56}
57
60 : ArgumentException(ExceptionTypeId::ArgumentNull, message)
61{
62}
63
65inline ArgumentNullException::ArgumentNullException(const String& message, const Exception& innerException)
66 : ArgumentException(ExceptionTypeId::ArgumentNull, message, innerException)
67{
68}
69
72 : ArgumentException(ExceptionTypeId::ArgumentNull, std::move(message), std::move(innerException))
73{
74}
75
78{
79 return ArgumentNullException(defaultMessage, paramName);
80}
81
83inline ArgumentNullException ArgumentNullException::Create(const char* paramName, const Exception& innerException)
84{
85 return ArgumentNullException(String::Format(defaultMessage, paramName), innerException);
86}
87
88}}} // end of namesapce Arp::System::Commons
This is the base class of all Arp exception classes.
Definition: Exception.hpp:16
std::shared_ptr< Exception > Ptr
The smart pointer tpye of this class.
Definition: Exception.hpp:19
This exception is used when an invalid argument occurs.
Definition: ArgumentException.hpp:15
This exception is used when an invalid <null> argument occurs.
Definition: ArgumentNullException.hpp:16
Exception::Ptr Clone(void) const override
Clones this instance.
ArgumentNullException(const char *message, const Args &... args)
Constructs an ArgumentNullException instance.
Definition: ArgumentNullException.hpp:47
static ArgumentNullException Create(const char *paramName)
Creates an ArgumentNullException instance using a default message text.
Definition: ArgumentNullException.hpp:77
static SelfType Format(const SelfType &format, const Args &... args)
Formats the format string using the .NET/Python syntax with the given variadic arguments.
Definition: BasicString.hxx:1493
@ System
System components used by the System, Device, Plc or Io domains.
ExceptionTypeId
Specifies the type id of any exception derived by <see cref="CommonException".
Definition: ExceptionTypeId.hpp:15
Root namespace for the PLCnext API
Namespace of the C++ standard library