2013-07-26 12 views
5
db, err := sql.Open("postgres", "…") 
if err != nil { 
    log.Fatalln(err) 
} 
defer db.Close() 

tpl, err := template.ParseGlob("") 
if err != nil { 
    log.Fatalln(err) 
} 

template.ParseGlob("") bir hata döndürürse, db.Close() hala çağrılıyor mu?Log.Fatalln çağrılırken ertelenen işlevler çağrıldı mı?

+0

Hayır. Çalışan ertelenmiş işlevlere ihtiyacınız varsa, 'log.Panicln' komutunu kullanın. – user

cevap

9

Hayır, ertelenen işlevler çalışmaz.

İşte log.Fatal açıklama:

Fatal os.Exit (1) çağrısıyla ardından Print eşdeğer() 'dir.

log.Fatal olan açıklamasıdır here, os.Exit çağırır:

Çık verilen durum koduyla çıkmak için mevcut programı neden olur. Geleneksel olarak, kod sıfır, sıfır olmayan bir hata olduğunu gösterir. programı hemen sonlandırır; ertelenmiş işlevler çalıştırılmaz.

Demonstration

gerçekten düzgün yakın kaynaklar veya programı bitmeden bazı görevleri yapmak gerekirse

ardından log.Fatal kullanmayın.

İlgili konular