kardiachain / go-kardia

Golang implementation of KardiaChain Decentralize Network
https://kardiachain.io
GNU Lesser General Public License v3.0
33 stars 18 forks source link

Log revert reason in case SMC call is reverted #127

Closed trinhdn97 closed 3 years ago

trinhdn97 commented 3 years ago
ngdlong91 commented 3 years ago
package main

import (
    "errors"
    "fmt"
)

var (
    ErrTest = &KVMError{
        Reason: "test err",
        Data:   "wrong format",
    }
)

type KVMError struct {
    Reason string
    Data interface{}
}

func (r *KVMError) Error() string {
    return r.Reason
}

func DoErrTest() error {
    return ErrTest
}

func main() {
    var kvmErr *KVMError
    err := DoErrTest()
    if errors.As(err, &kvmErr) {
        fmt.Println("KVMErr", kvmErr.Reason)
        fmt.Println("KVMErr", kvmErr.Data)
    }
}