52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package ole
|
|
|
|
// OleError stores COM errors.
|
|
type OleError struct {
|
|
hr uintptr
|
|
description string
|
|
subError error
|
|
}
|
|
|
|
// NewError creates new error with HResult.
|
|
func NewError(hr uintptr) *OleError {
|
|
return &OleError{hr: hr}
|
|
}
|
|
|
|
// NewErrorWithDescription creates new COM error with HResult and description.
|
|
func NewErrorWithDescription(hr uintptr, description string) *OleError {
|
|
return &OleError{hr: hr, description: description}
|
|
}
|
|
|
|
// NewErrorWithSubError creates new COM error with parent error.
|
|
func NewErrorWithSubError(hr uintptr, description string, err error) *OleError {
|
|
return &OleError{hr: hr, description: description, subError: err}
|
|
}
|
|
|
|
// Code is the HResult.
|
|
func (v *OleError) Code() uintptr {
|
|
return uintptr(v.hr)
|
|
}
|
|
|
|
// String description, either manually set or format message with error code.
|
|
func (v *OleError) String() string {
|
|
if v.description != "" {
|
|
return errstr(int(v.hr)) + " (" + v.description + ")"
|
|
}
|
|
return errstr(int(v.hr))
|
|
}
|
|
|
|
// Error implements error interface.
|
|
func (v *OleError) Error() string {
|
|
return v.String()
|
|
}
|
|
|
|
// Description retrieves error summary, if there is one.
|
|
func (v *OleError) Description() string {
|
|
return v.description
|
|
}
|
|
|
|
// SubError returns parent error, if there is one.
|
|
func (v *OleError) SubError() error {
|
|
return v.subError
|
|
}
|