Package exception
import "exp/exception"
This package illustrates how basic try-catch exception handling can be emulated using goroutines, channels, and closures.
This package is *not* intended as a general exception handler library.
Package files
exception.gotype Exception
An Exception carries an exception value.
type Exception struct {
Value interface{} // Value may be the nil exception
}
func Try
func Try(f func(throw Handler)) *Exception
Try invokes a function f with a Handler to throw exceptions. The function f may terminate abnormally with an arbitrary exception x by calling throw(x) within f. If an exception is thrown, Try returns an *Exception; otherwise it returns nil.
Usage pattern:
if x := exception.Try(func(throw exception.Handler) {
...
throw(42); // terminate f by throwing exception 42
...
}); x != nil {
// catch exception, e.g. print it
fmt.Println(x.Value);
}
Alternative:
exception.Try(func(throw exception.Handler) {
...
throw(42); // terminate f by throwing exception 42
...
}).Catch(func (x interface{}) {
// catch exception, e.g. print it
fmt.Println(x);
})
func (*Exception) Catch
func (x *Exception) Catch(f Handler)
If x != nil, Catch invokes f with the exception value x.Value. See Try for usage patterns.
func (*Exception) String
func (x *Exception) String() string
type Handler
A Handler function handles an arbitrary exception value x.
type Handler func(x interface{})
