2013-11-01 6 views
6

नोड.जेएस में, अगर मेरे पास एक अपवाद फेंकने वाली कोई विधि है, तो उस विधि से console.log कथन आग नहीं लगाते हैं। मैं मानता हूं कि नीचे दिए गए सरल परीक्षण मामले में मुझे readFileSync कॉल से अपवाद प्राप्त करना चाहिए, या अन्यथा इसके बारे में रक्षात्मक होना चाहिए। अगर कोई मुझे व्यवहार की व्याख्या कर सकता है तो बस उत्सुक है।नोड.जेएस: कंसोल.लॉग संदेश दिखाई नहीं देता है अगर विधि अपवाद फेंकता है ... क्यों?

सरल परीक्षण का मामला:

var fs = require('fs'); 

function readAFileThatDoesntExist(filename) { 
    console.log(filename); 
    fs.readFileSync(filename); 
} 

console.log("We're about to read a file that doesn't exist!"); 
readAFileThatDoesntExist("afile"); 

आउटपुट:

$ node test.js 
We're about to read a file that doesn't exist! 

fs.js:338 
    return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); 
       ^
Error: ENOENT, no such file or directory 'C:\blog\projects\bloggen\scripts\afile' 
    at Object.fs.openSync (fs.js:338:18) 
    at Object.fs.readFileSync (fs.js:182:15) 
    at readAFileThatDoesntExist (C:\blog\projects\bloggen\scripts\test.js:5:8) 
    at Object.<anonymous> (C:\blog\projects\bloggen\scripts\test.js:9:1) 
    at Module._compile (module.js:449:26) 
    at Object.Module._extensions..js (module.js:467:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.runMain (module.js:492:10) 
    at process.startup.processNextTick.process._tickCallback (node.js:244:9) 
+0

यह मेरे लिए अपेक्षित काम करता है (नोड 0.10.10) – JJJ

+0

मेरे लिए भी काम करता है (v0.10.21)। – matth

+0

हाँ, मुझे नहीं पता था कि मेरा नोड कितना दूर था ... धन्यवाद। – Shaun

उत्तर

18

आह, यह समझ से बाहर।

ऐसा लगता है कि प्रक्रिया से पहले console.log खत्म नहीं हो रहा है ... अगर मैं console.warn का उपयोग करता हूं, तो संदेश दिखाई देता है। इसके अलावा is node.js' console.log asynchronous?

, मैं एक पुराने संस्करण (0.8.15) पर हूँ, इसलिए यह अब प्रासंगिक हो सकता है:

इस पोस्ट में यह बताते हैं।

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