賞金將在 4 天后到期。此問題的答案有資格獲得 50聲望賞金。 Nisha Dave希望引起對這個問題的更多關注。
我是 Web 開發的新手,并沒有過多考慮錯誤。但是今天我注意到我必須使用一些東西json.stringyfy()來查看整個錯誤物件。message陳述句 2 中也沒有顯示 key,但是當我列印時,我error.message收到一條訊息而不是undefined. “訊息”甚至不是一個鍵(檢查陳述句 4),但仍然記錄 error.message 記錄一個值(typeof(error.message)是string)。
try {
//Some error occours
} catch (error) {
console.log(JSON.stringify(error)) //statement 1
console.error(error) //statement 2
console.log(error.message) //statement 3
console.log(Object.keys(error)) //statement 4
}
宣告 1 日志
MongoServerError: E11000 duplicate key error collection: trendyApp.Markets index: name_1 dup key: { name: "murat market" }
at D:\web projects\trendyApp\server\node_modules\mongodb\lib\operations\insert.js:51:33
at D:\web projects\trendyApp\server\node_modules\mongodb\lib\cmap\connection_pool.js:273:25
at handleOperationResult (D:\web projects\trendyApp\server\node_modules\mongodb\lib\sdam\server.js:363:9)
at MessageStream.messageHandler (D:\web projects\trendyApp\server\node_modules\mongodb\lib\cmap\connection.js:474:9)
at MessageStream.emit (events.js:375:28)
at processIncomingData (D:\web projects\trendyApp\server\node_modules\mongodb\lib\cmap\message_stream.js:108:16)
at MessageStream._write (D:\web projects\trendyApp\server\node_modules\mongodb\lib\cmap\message_stream.js:28:9)
at writeOrBuffer (internal/streams/writable.js:358:12)
at MessageStream.Writable.write (internal/streams/writable.js:303:10)
at TLSSocket.ondata (internal/streams/readable.js:726:22) {
index: 0,
code: 11000,
keyPattern: { name: 1 },
keyValue: { name: 'murat market' }
}
宣告 2 日志
{"index":0,"code":11000,"keyPattern":{"name":1},"keyValue":{"name":"murat market"}}
宣告 3 日志
E11000 duplicate key error collection: trendyApp.Markets index: name_1 dup key: { name: "murat market" }
我在制作快速應用程式時看到了這種行為,錯誤是由貓鼬產生的,但我認為這在整個 javascript 中都很常見
宣告 4 日志
[ 'index', 'code', 'keyPattern', 'keyValue' ]
uj5u.com熱心網友回復:
“訊息”甚至不是鍵(檢查陳述句 4)
它是,但Object.keys旨在列出可列舉的屬性,而message不是可列舉的。
在 ECMAScript 規范中,我們在Error 建構式的部分中看到建構式使用程序創建其訊息(和其他屬性):
執行CreateNonEnumerableDataPropertyOrThrow ( O , "message", msg )。
其他——自定義——屬性當然可以通過 JavaScript 代碼添加到 Error 物件中,這解釋了為什么其他屬性由Object.keys().
至于輸出console.log:consoleAPI 實作在如何顯示物件方面有很大的自由度——在實作之間可以找到很多差異。
要同時輸出那些不可列舉的屬性,請使用
console.log(Object.getOwnPropertyNames(error))
uj5u.com熱心網友回復:
正如@trincot 所說,它沒有顯示,因為它是messageError 建構式的不可列舉屬性,MongoServerError覆寫了MongoError,實際上這覆寫了 JS Error 物件,所以如果你需要知道你對錯誤有什么屬性可以查看前面的鏈接,看看可以查看哪些屬性。
此外,如果您想獲取所有屬性(包括不可列舉的屬性),您可以使用它Object.getOwnProperties(error)來查看給定物件具有的所有屬性。
您還可以使用Object.getOwnPropertyDescriptors(error)來了解您在給定物件中定義的每個屬性的描述符是什么。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/437085.html
標籤:javascript 表示 猫鼬
上一篇:如何不洗掉貓鼬(express.js)中的整個檔案,而只是洗掉陣列中的一個字串
下一篇:Mongoose單級查詢
