Prevención de accidentes de pánico de Golang

En Golang, un pánico sin recuperación bloqueará el proceso, por lo que termino colocando el siguiente fragmento de código al comienzo de cada función:

defer func() {
    if err := recover(); err != nil {
        fmt.Println(err)
    }
}()

solo para evitar que mi programa se bloquee. Ahora me pregunto, ¿es realmente el camino a seguir? Porque creo que parece un poco extraño poner el mismo código en todas partes.

Me parece, la forma de Java, burbujeando las excepciones hasta la función de llamada, hasta que la función principal es una mejor manera de controlar las excepciones / pánicos. Entiendo que es por el diseño de Go, pero ¿cuál es la ventaja de bloquear inmediatamente el proceso al igual que lo que hace Go?

Respuestas a la pregunta(2)

Su respuesta a la pregunta