/
error.go
73 lines (59 loc) · 1.86 KB
/
error.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package keeltemporal
// see https://docs.temporal.io/go/error-handling/
import (
"github.com/pkg/errors"
"go.temporal.io/sdk/temporal"
)
const ActivityErrorType = "keeltemporal.ActivityError"
func NewActivityError(msg string, err error, details ...interface{}) error {
return temporal.NewNonRetryableApplicationError(msg, ActivityErrorType, err, details...)
}
func IsErrorType(err error, errorType string) bool {
if applicationErr := AsApplicationError(err); applicationErr != nil && applicationErr.Type() == errorType {
return true
}
return false
}
func IsActivityError(err error) bool {
return IsErrorType(err, ActivityErrorType)
}
func IsApplicationError(err error, handler func(applicationErr *temporal.ApplicationError)) bool {
return AsApplicationError(err) != nil
}
func AsApplicationError(err error) *temporal.ApplicationError {
var applicationErr *temporal.ApplicationError
if err != nil && errors.As(err, &applicationErr) {
return applicationErr
}
return nil
}
func IsCanceledError(err error, handler func(canceledErr *temporal.CanceledError)) bool {
return AsCanceledError(err) != nil
}
func AsCanceledError(err error) *temporal.CanceledError {
var canceledErr *temporal.CanceledError
if err != nil && errors.As(err, &canceledErr) {
return canceledErr
}
return nil
}
func IsTimeoutError(err error, handler func(timeoutErr *temporal.TimeoutError)) bool {
return AsTimeoutError(err) != nil
}
func AsTimeoutError(err error) *temporal.TimeoutError {
var timeoutErr *temporal.TimeoutError
if err != nil && errors.As(err, &timeoutErr) {
return timeoutErr
}
return nil
}
func IsPanicError(err error, handler func(panicErr *temporal.PanicError)) bool {
return AsPanicError(err) != nil
}
func AsPanicError(err error) *temporal.PanicError {
var panicErr *temporal.PanicError
if err != nil && errors.As(err, &panicErr) {
return panicErr
}
return nil
}