The defer is not being run directly as a result of the panic.
>From the spec:
> The recover function allows a program to manage behavior of a
> panicking goroutine. Suppose a function G defers a function D that
> calls recover and a panic occurs in a function on the same goroutine
> in which G is executing. When the running of deferred functions
> reaches D, the return value of D's call to recover will be the value
> passed to the call of panic. If D returns normally, without starting
> a new panic, the panicking sequence stops.
On Thu, 2019-07-18 at 12:51 +0800, ZP L wrote:
> Sorry for the bad formatting.
>
> > recover must be called directly by a deferred function
>
> func logPanic() {
> defer func() {
> if err := recover(); err != nil {
> fmt.Println("got panic")
> return
> }
> }()
> }
> This still not working.
>
>
>
> From https://blog.golang.org/defer-panic-and-recover,
>
> *Recover* is a built-in function that regains control of a panicking
> goroutine. Recover is only useful inside deferred functions. During
> normal
> execution, a call to recover will return nil and have no other
> effect. *If
> the current goroutine is panicking, a call to recover will capture
> the
> value given to panic and resume normal execution.*
> I think I didn't break any rules.
>
>
> Ian Lance Taylor <[email protected]> 于2019年7月17日周三 下午9:59写道:
>
> > On Wed, Jul 17, 2019 at 5:11 AM Tamás Gulácsi <[email protected]
> > >
> > wrote:
> > >
> > > The "recover()" call must be in the deferred part.
> >
> > Yes, as the spec says, recover must be called directly by a
> > deferred
> > function.
> >
> > When sending code to this list, please use a link to the Go
> > playground
> > or use plain text. The highlighted text with a black background is
> > unreadable. Thanks.
> >
> > Ian
> >
> > --
> > 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/Ok40EBXxQ2Q/unsubscribe
> > .
> > To unsubscribe from this group and all its topics, send an email to
> > [email protected].
> > To view this discussion on the web visit
> >
https://groups.google.com/d/msgid/golang-nuts/CAOyqgcXUWYdq%3DzSSw4V_HvNzrNpnrt1awEZbRFca0f6qHoBdsQ%40mail.gmail.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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/5f7558fc749fc840a273bc34ecd5a3ece808eeb3.camel%40kortschak.io.
For more options, visit https://groups.google.com/d/optout.