2016-06-22 14 views
0

Wie überschreibt man Beegos recoverPanic? Ich habe die Flagge recoverpanic = false gesetzt und schreibe meine eigene Wiederherstellung, aber habe kein Glück, es druckt nur die Paniknachricht zur Konsole, die stattdessen zu meiner Wiederherstellungsfunktion springt.Wie erstelle ich eine benutzerdefinierte Wiederherstellung in Beego?

func main() { 
    defer recoverPanic() 
    beego.Run() 
} 

func recoverPanic() { 
    if err := recover(); err != nil { 
     fmt.Println("Panic should go there") 
    } 
} 

Ich möchte alle unexpect Fehler abzufangen, z nil pointer, einige Protokoll schreiben und E-Mail an unsere Maintainer senden.

Antwort

0

Sie sollten recoverPanic am Anfang jeder goroutine hinzufügen. Sie fügen die recover in der main-Funktion hinzu und es wird die panic der Anforderung nicht zwischengespeichert.

Versuchen Sie dies in Beego:

func (c *MainController) Get() { 
    defer recoverPanic() 

    ... Your Code ... 
} 
+0

Haben Sie versuchen? Es funktioniert nicht. – windyzboy

+0

Zeig mir deinen Code. @windyzboy – Bryce