2013-07-26 5 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("") एक त्रुटि देता है, तो अभी भी db.Close() कहा जा रहा है?लॉग कॉल करते समय स्थगित फ़ंक्शंस हैं। फ़ैटलन?

+0

नहीं। यदि आपको स्थगित कार्यों को चलाने की आवश्यकता है, तो 'log.Panicln' का उपयोग करें – user

उत्तर

9

नहीं, स्थगित कार्य नहीं चल रहे हैं।

यहाँ log.Fatal का विवरण दिया गया है:

घातक बराबर प्रिंट करने के लिए() os.Exit (1) के लिए एक कॉल के बाद है।

log.Fatalos.Exit कहता है, जिसका वर्णन here है:

बाहर निकलें दी स्थिति कोड के साथ बाहर निकलने के लिए वर्तमान कार्यक्रम का कारण बनता है। परंपरागत रूप से, कोड शून्य सफलता को इंगित करता है, शून्य त्रुटि नहीं। प्रोग्राम तुरंत समाप्त हो जाता है; स्थगित कार्य नहीं चल रहे हैं।

Demonstration

तुम सच में ठीक से पास संसाधनों तक या उससे पहले कार्यक्रम खत्म कुछ कार्य करने की जरूरत है, तो log.Fatal प्रयोग नहीं करते।

संबंधित मुद्दे