Added recoverable option
This commit is contained in:
parent
306b5bcff3
commit
3c3292d505
@ -37,6 +37,8 @@ type Vm struct {
|
|||||||
BreakPoints []int64
|
BreakPoints []int64
|
||||||
Stepping bool
|
Stepping bool
|
||||||
Fn string
|
Fn string
|
||||||
|
|
||||||
|
Recoverable bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type Environment interface {
|
type Environment interface {
|
||||||
@ -62,10 +64,11 @@ func New(env Environment) *Vm {
|
|||||||
lt = LogTyDiff
|
lt = LogTyDiff
|
||||||
}
|
}
|
||||||
|
|
||||||
return &Vm{env: env, logTy: lt}
|
return &Vm{env: env, logTy: lt, Recoverable: true}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
|
func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
|
||||||
|
if self.Recoverable {
|
||||||
// Recover from any require exception
|
// Recover from any require exception
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
@ -74,6 +77,7 @@ func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
|
|||||||
vmlogger.Errorln("vm err", err)
|
vmlogger.Errorln("vm err", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
// Debug hook
|
// Debug hook
|
||||||
if self.Dbg != nil {
|
if self.Dbg != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user