12345678910111213141516171819 |
- // Copyright (c) 2021 Shivaram Lingamneni
- // released under the MIT license
-
- package irc
-
- import (
- "fmt"
- "runtime/debug"
- )
-
- // HandlePanic is a general-purpose panic handler for ad-hoc goroutines.
- // Because of the semantics of `recover`, it must be called directly
- // from the routine on whose call stack the panic would occur, with `defer`,
- // e.g. `defer server.HandlePanic()`
- func (server *Server) HandlePanic() {
- if r := recover(); r != nil {
- server.logger.Error("internal", fmt.Sprintf("Panic encountered: %v\n%s", r, debug.Stack()))
- }
- }
|