mirror of
https://github.com/ergochat/ergo.git
synced 2024-12-22 18:52:41 +01:00
20 lines
550 B
Go
20 lines
550 B
Go
// 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()))
|
|
}
|
|
}
|