19 lines
349 B
Go
19 lines
349 B
Go
package safego
|
||
|
||
import (
|
||
"log/slog"
|
||
"runtime/debug"
|
||
)
|
||
|
||
// Go 以协程执行 fn,并捕获 panic 记录日志,防止协程崩溃杀死整个进程
|
||
func Go(fn func()) {
|
||
go func() {
|
||
defer func() {
|
||
if r := recover(); r != nil {
|
||
slog.Error("goroutine panic recovered", "panic", r, "stack", string(debug.Stack()))
|
||
}
|
||
}()
|
||
fn()
|
||
}()
|
||
}
|