github.com/hspan/go-ole@v0.0.0/error.go (about) 1 package ole 2 3 // OleError stores COM errors. 4 type OleError struct { 5 hr uintptr 6 description string 7 subError error 8 } 9 10 // NewError creates new error with HResult. 11 func NewError(hr uintptr) *OleError { 12 return &OleError{hr: hr} 13 } 14 15 // NewErrorWithDescription creates new COM error with HResult and description. 16 func NewErrorWithDescription(hr uintptr, description string) *OleError { 17 return &OleError{hr: hr, description: description} 18 } 19 20 // NewErrorWithSubError creates new COM error with parent error. 21 func NewErrorWithSubError(hr uintptr, description string, err error) *OleError { 22 return &OleError{hr: hr, description: description, subError: err} 23 } 24 25 // Code is the HResult. 26 func (v *OleError) Code() uintptr { 27 return uintptr(v.hr) 28 } 29 30 // String description, either manually set or format message with error code. 31 func (v *OleError) String() string { 32 if v.description != "" { 33 return errstr(int(v.hr)) + " (" + v.description + ")" 34 } 35 return errstr(int(v.hr)) 36 } 37 38 // Error implements error interface. 39 func (v *OleError) Error() string { 40 return v.String() 41 } 42 43 // Description retrieves error summary, if there is one. 44 func (v *OleError) Description() string { 45 return v.description 46 } 47 48 // SubError returns parent error, if there is one. 49 func (v *OleError) SubError() error { 50 return v.subError 51 }