Re the Go2 Error Handling proposal
  
https://go.googlesource.com/proposal/+/master/design/go2draft-error-handling.md

I have posted this feedback
  https://gist.github.com/networkimprov/c6cb3e2dff18d31840f2ef22e79d4a1e

Which contains an alternate handler concept. Please let me know if you 
think this merits its own github.com/golang issue.

A *flag identifier *indicates errors of various types. This also allows 
chaining of handlers with the same flag name. There are options for the #flag 
syntax, e.g. flag!, $flag, @flag, etc.

func f() {
   v, #ret := returnIfError()   // #ret can be any type; any non-zero value for 
it triggers its catch
   v, #fat := fatalIfError()    // #ret, etc are (probably) not local variables
   v, #wrt := writeOnError()
   if v != nice { // new scope
      #fat = MyError{msg:"!nice", ...}
      catch fat error { debug.PrintStack() }      // no return/exit; chained 
with next catch fat
   }
   #packageFlag = anotherError() // invokes package-level handler
   
   catch ret error { return ret }                 // if type is error, type 
name could be optional
   catch fat error { log.Fatal(fat) }
   catch wrt error { con.Write(...); return nil } // return/exit required in 
last handler on chain
}

catch packageFlag error { ... } // package-level handler; packageFlag is not a 
package variable

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to