Posted your link to the feedback wiki, and to my design-revision draft, which will land on the issue tracker this week.
https://golang.org/wiki/Go2ErrorHandlingFeedback https://gist.github.com/networkimprov/c6cb3e2dff18d31840f2ef22e79d4a1e On Sun, Sep 2, 2018, 4:49 PM Vlad Didenko <v...@didenko.com> wrote: > Absolutely, go ahead, thank you! I can add more "why" reasoning about > "grab" design differences from "catch", but won't get to it until next > weekend :( > > On Sunday, September 2, 2018 at 6:46:08 PM UTC-5, Liam wrote: >> >> Well, that was then, this is now... >> >> I'll just note that 10 of 30 feedback posts on the error handling draft >> feedback wiki have asked for named handlers. Can I add your link there? >> >> >> On Sun, Sep 2, 2018, 4:33 PM Vlad Didenko <vl...@didenko.com> wrote: >> >>> Some time ago, after going through a very similar design (really, even >>> had the catch clause in there), I have arrived at a more generalized >>> version of it. That contemplation (still available at >>> https://didenko.github.io/grab/grab_worth_it_0.1.1.html ) was very much >>> unaccepted here. >>> >>> Well, I actually do not remember if it was posted here or in golang-dev. >>> >>> On Wednesday, August 29, 2018 at 5:16:42 PM UTC-5, Liam wrote: >>>> >>>> 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 a topic in the >>> Google Groups "golang-nuts" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/golang-nuts/tW97ZxsCvdQ/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> golang-nuts...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- > You received this message because you are subscribed to a topic in the > Google Groups "golang-nuts" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/golang-nuts/tW97ZxsCvdQ/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- 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.