2016-10-20 90 views
0

如何處理意外事件,例如奇怪的數據,損壞的數據,意外的數據或事件偵聽器中出現問題的地方。處理事件偵聽器中的意外數據,例如WebSocket.onmessage

WebSocket公開了一個onmessage事件偵聽器。如果它收到意想不到的事情,這是如何處理的? 通過拋出異常,記錄到控制檯,默默忽略它?

  • 如果事件偵聽器拋出一個異常,那麼我想沒有什麼可以捕捉到這個異常。那不好嗎?
  • 使用console.log在生產中不好?
  • 如果事件偵聽器默默地忽略該消息?那不好嗎?
let socket = new WebSocket('wss://www.example.com/'); 
socket.onmessage = function (event) { 
    if (event.data === 'GARBAGE') { 
     // What is the appropriate thing to do here? 
    } 
} 

回答

0

這真的取決於你的應用程序,以及如何關鍵問題。

  • 一般來說,將輸出輸出到控制檯進行生產,尤其是錯誤,並不是什麼好事。最終用戶可能不喜歡在控制檯日誌中看到「錯誤」或「異常」,特別是如果應用程序處理一些敏感信息。
  • 使用console.log時必須小心,特別是在打印某些變量時,可能會引入一些內存泄漏。

忽略錯誤應該是設計選擇。如果您向偵聽器收到意外的數據,則意味着您的系統無法正常工作。至少,你應該知道你爲什麼得到這樣的輸入。

+0

如果客戶端收到意外的數據,可能是因爲使用該庫的任何人使用它與一個錯誤的服務器。 – Fred

+0

這很好。當他收到這樣的輸入時,對系統/用戶有什麼影響? –

+0

客戶端會感到困惑,不知道如何處理數據。也許失敗,因爲某些東西是'未定義'的。無論哪種方式,客戶端庫不應該以某種方式提醒庫的用戶服務器發送的意外事件? – Fred

相關問題