- 
					
						首页
					
				
 
				- 
					
						C4D R23.110 C++ SDK
					
				
 
			
			
				
				
				
					ErrorInterface Class Reference
					
						
							系统
						
					
				
			 
			
				
					
#include <objectbase.h>
					
				
				
				
				
					详细描述
				
				
					
						ErrorInterface
					
					is the base interface for errors.
					
						ErrorInterface
					
					itself cannot be instantiated, but there are several derived interfaces to indicate specific error conditions such as OutOfMemoryError, NullptrError or IllegalStateError.
				
				
					An error typically contains file and line information (
					
						GetLocation()
					
					) and a message (
					
						GetMessage()
					
					). It may also have a stack trace (
					
						GetStackTrace()
					
					) and a cause (
					
						GetCause()
					
					), which is another error which caused this error.
				
				
					Normally, errors shouldn't be used directly for return types of functions. Instead, you should use
					
Result<T>
					
					which can hold a result value and an error. The macros
					
						iferr
					
					and
					
						iferr_return
					
					support
					Result
					to facilitate error handling.
				
				
					Errors are typically created in statements like
				
				
					return
				
				IllegalStateError(
				
					MAXON_SOURCE_LOCATION
				
				,
				
					"Object already contained in hierarchy."
				
				_s);
			
 
		 
		
			The usage of MAXON_SOURCE_LOCATION ensures that file and line information is set correctly in the error. The message is optional, and you can also pass a cause as third argument to the constructor. Some error classes may add specific constructors with additional arguments. But errors also support method chaining if you want so set additional values like the stack trace:
		
		
The ToString implementation of errors supports the following format statements:
	
	公共成员函数
 | 
| 
	Ptr
 
 | 
	GetPtr
()
 | 
| 
	ConstPtr
 
 | 
	GetPtr
() const
 | 
| 
 
 | 
	MAXON_ADD_TO_COPY_ON_WRITE_REFERENCE_CLASS
(protected:void Create(
	MAXON_SOURCE_LOCATION_DECLARATION
) { *static_cast< typename S::DirectlyReferencedType::Hxx1::ReferenceClass * >(this)=S::DirectlyReferencedType::Hxx1::ErrObj::GetInstance()();typename S::DirectlyReferencedType::Ptr e=this->MakeWritable(false).GetPointer();e.SetLocation(
	MAXON_SOURCE_LOCATION_FORWARD
);} void Create(
	MAXON_SOURCE_LOCATION_DECLARATION
, const
	String
&msg) { *static_cast< typename S::DirectlyReferencedType::Hxx1::ReferenceClass * >(this)=S::DirectlyReferencedType::Hxx1::ErrObj::GetInstance()();typename S::DirectlyReferencedType::Ptr e=this->MakeWritable(false).GetPointer();e.SetLocation(
	MAXON_SOURCE_LOCATION_FORWARD
);e.SetMessage(msg);} void Create(
	MAXON_SOURCE_LOCATION_DECLARATION
, const
	String
&msg, const Error &cause) { *static_cast< typename S::DirectlyReferencedType::Hxx1::ReferenceClass * >(this)=S::DirectlyReferencedType::Hxx1::ErrObj::GetInstance()();typename S::DirectlyReferencedType::Ptr e=this->MakeWritable(false).GetPointer();e.SetLocation(
	MAXON_SOURCE_LOCATION_FORWARD
);e.SetMessage(msg);e.SetCause(cause);})
 | 
| 
 
 | 
	MAXON_ADD_TO_CONST_REFERENCE_CLASS
(RefMemberType< S > DbgStop() {
	DebugOutput
(
	OUTPUT::DIAGNOSTIC
, static_cast< const typename S::ReferenceClass * >(this) ->
	ToString
());
	DebugStop
();return this->PrivateGetRefMember();} RefMemberType< S > CritStop() {
	CriticalOutput
(static_cast< const typename S::ReferenceClass * >(this) ->
	ToString
());return this->PrivateGetRefMember();} RefMemberType< S > DiagOutput() {
	DiagnosticOutput
(static_cast< const typename S::ReferenceClass * >(this) ->
	ToString
());return this->PrivateGetRefMember();})
 | 
| 
const
	MAXON_METHOD
	SourceLocation
& 
 | 
	GetLocation
() const
 | 
| 
	MAXON_METHOD
void 
 | 
	SetLocation
(
	MAXON_SOURCE_LOCATION_DECLARATION
)
 | 
| 
	MAXON_METHOD
	Block
< void *const > 
 | 
	GetStackTrace
() const
 | 
| 
	MAXON_METHOD
void 
 | 
	SetStackTrace
(const
	Block
< void *const > &trace)
 | 
| 
	MAXON_FUNCTION
void 
 | 
	SetStackTrace
(
	Int
skip=
	STACKTRACE_SKIP
)
 | 
| 
	MAXON_METHOD
	String
 
 | 
	GetMessage
() const
 | 
| 
	MAXON_METHOD
void 
 | 
	SetMessage
(const
	String
&message)
 | 
| 
const
	MAXON_METHOD
Error & 
 | 
	GetCause
() const
 | 
| 
	MAXON_METHOD
void 
 | 
	SetCause
(const Error &cause)
 | 
| 
	MAXON_METHOD
void 
 | 
	GetMachine
(MachineRef &machine) const
 | 
| 
	MAXON_METHOD
void 
 | 
	SetMachine
(const MachineRef &machine)
 | 
| 
	MAXON_METHOD
	Int
 
 | 
	PrivateGetCode
() const
 | 
| 
	MAXON_METHOD
void 
 | 
	PrivateSetCode
(
	Int
code)
 | 
| 
	MAXON_METHOD
void 
 | 
	PrivateSetPreallocation
(
	ThreadReferencedError
preallocation) const
 | 
| 
	MAXON_METHOD
	ThreadReferencedError
 
 | 
	PrivateGetPreallocation
() const
 | 
| 
	MAXON_METHOD
void 
 | 
	PrivateSetDebugError
(const Error &cause) const
 | 
| 
	Ptr
 
 | 
	GetPtr
()
 | 
| 
	ConstPtr
 
 | 
	GetPtr
() const
 | 
| 
template<typename INTERFACE = ObjectInterface>
 | 
| 
const
	MAXON_FUNCTION
	maxon::Class
< typename INTERFACE::Hxx1::ReferenceClass > & 
 | 
	GetClass
() const
 | 
| 
const
	MAXON_FUNCTION
ClassInfo * 
 | 
	GetClassInfo
() const
 | 
| 
template<typename REF >
 | 
| 
const ComponentInfo & 
 | 
	GetComponentInfoOfSuper
(const REF *sptr,
	OverloadRank0
) const
	MAXON_IF_TARGET_DEBUG
(
 | 
| 
template<typename REF , typename = typename REF::Component::ComponentClass>
 | 
| 
const ComponentInfo & 
 | 
	GetComponentInfoOfSuper
(const REF *sptr,
	OverloadRank1
) const
 | 
| 
	MAXON_FUNCTION
	Bool
 
 | 
	HasSameClass
(const
	ObjectInterface
*obj) const
 | 
| 
Result
< void > 
 | 
	CopyFrom
(const
	ObjectInterface
*
	src
)
 | 
| 
Result
<
	ObjectInterface
* > 
 | 
	Clone
() const
 | 
| 
template<typename REFCLASS >
 | 
| 
	MAXON_FUNCTION
Result
< REFCLASS > 
 | 
	Clone
() const
 | 
| 
template<typename I >
 | 
| 
	MAXON_FUNCTION
	Bool
 
 | 
	IsInstanceOf
() const
 | 
| 
	MAXON_FUNCTION
	Bool
 
 | 
	IsInstanceOf
(const
	DataType
&type) const
 | 
| 
	MAXON_METHOD
	String
 
 | 
	ToString
(const
	FormatStatement
*formatStatement=nullptr) const
 | 
| 
	MAXON_METHOD
Result
< void > 
 | 
	InitObject
(const void *argument)
 | 
| 
	MAXON_METHOD
Result
< void > 
 | 
	HandleMessage
(const
	InternedId
&message, const void *argument)
 | 
| 
	MAXON_METHOD
	Bool
 
 | 
	IsEqual
(const
	maxon::ObjectInterface
*other) const
 | 
| 
	MAXON_METHOD
	COMPARERESULT
 
 | 
	比较
(const
	maxon::ObjectInterface
*other) const
 | 
| 
	MAXON_FUNCTION
	HashInt
 
 | 
	GetHashCode
() const
 | 
| 
	MAXON_METHOD
	HashInt
 
 | 
	GetHashCodeImpl
() const
 | 
| 
	MAXON_METHOD
	HashValue
 
 | 
	GetHashValueImpl
() const
 | 
| 
 
 | 
	MAXON_ADD_TO_CONST_REFERENCE_CLASS
(
	Bool
operator==(std::nullptr_t) const { return
	RefCompare
<
	MAXON_IS_COW_KIND
(S::Handler::KIND), true >::template
	IsEqual
< const
	ObjectInterface
*, const
	ObjectInterface
* >(this->GetPointer(), nullptr);})
 | 
| 
 
 | 
	MAXON_ADD_TO_CONST_REFERENCE_CLASS
(
	Bool
operator!=(std::nullptr_t) const { return !
	RefCompare
<
	MAXON_IS_COW_KIND
(S::Handler::KIND), true >::template
	IsEqual
< const
	ObjectInterface
*, const
	ObjectInterface
* >(this->GetPointer(), nullptr);})
 | 
| 
 
 | 
	MAXON_ADD_TO_CONST_REFERENCE_CLASS
(
	Bool
operator==(const
	ObjectInterface
*ref) const { return
	RefCompare
<
	MAXON_IS_COW_KIND
(S::Handler::KIND), true >::template
	IsEqual
< const
	ObjectInterface
*, const
	ObjectInterface
* >(this->GetPointer(), ref);})
 | 
| 
 
 | 
	MAXON_ADD_TO_CONST_REFERENCE_CLASS
(
	Bool
operator!=(const
	ObjectInterface
*ref) const { return !
	RefCompare
<
	MAXON_IS_COW_KIND
(S::Handler::KIND), true >::template
	IsEqual
< const
	ObjectInterface
*, const
	ObjectInterface
* >(this->GetPointer(), ref);})
 | 
| 
 
 | 
	MAXON_ADD_TO_CONST_REFERENCE_CLASS
(
	Bool
operator==(
	ObjectInterface
*ref) const { return
	RefCompare
<
	MAXON_IS_COW_KIND
(S::Handler::KIND), true >::template
	IsEqual
< const
	ObjectInterface
*, const
	ObjectInterface
* >(this->GetPointer(), ref);})
 | 
| 
 
 | 
	MAXON_ADD_TO_CONST_REFERENCE_CLASS
(
	Bool
operator!=(
	ObjectInterface
*ref) const { return !
	RefCompare
<
	MAXON_IS_COW_KIND
(S::Handler::KIND), true >::template
	IsEqual
< const
	ObjectInterface
*, const
	ObjectInterface
* >(this->GetPointer(), ref);})
 | 
| 
 
 | 
	MAXON_ADD_TO_CONST_REFERENCE_CLASS
(template< typename T >
	Bool
operator==(T *ref) const { return
	RefCompare
<
	MAXON_IS_COW_KIND
(S::Handler::KIND), true >::template
	IsEqual
< const
	ObjectInterface
*, const
	ObjectInterface
* >(this->GetPointer(), ref);})
 | 
| 
 
 | 
	MAXON_ADD_TO_CONST_REFERENCE_CLASS
(template< typename T >
	Bool
operator!=(T *ref) const { return !
	RefCompare
<
	MAXON_IS_COW_KIND
(S::Handler::KIND), true >::template
	IsEqual
< const
	ObjectInterface
*, const
	ObjectInterface
* >(this->GetPointer(), ref);})
 | 
| 
	Bool
 
 | 
	PrivateIsInstanceOf
(const
	DataType
&type) const
 | 
Returns the stack trace of this error. This may be empty.
Sets the stack trace of this error to the current stack trace. The skip parameter allows to skip the topmost stack frames, which are typically insignificant as they include the SetStackTrace invocation itself.
Returns the cause of this error. A cause is itself an error of which the current error is a subsequent error.
Sets the cause of this error. A cause is itself an error of which the current error is a subsequent error.