RTCError

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

RTCError 介面描述了在處理 WebRTC 操作時發生的錯誤。它基於標準的 DOMException 介面,該介面描述了通用的 DOM 錯誤。

DOMException RTCError

建構函式

RTCError()

建立並返回一個新的 RTCError 物件,該物件使用不同的引數進行初始化,並可選地提供一個字串作為錯誤 message 屬性的值。

例項屬性

除了父介面 DOMException 定義的屬性外,RTCError 還包含以下屬性:

errorDetail 只讀

一個指定 WebRTC 特定錯誤程式碼的字串,用於標識發生的錯誤型別。

receivedAlert 只讀

一個無符號長整型值,指示從網路接收到的致命 DTLS 錯誤。僅當 errorDetail 字串為 dtls-failure 時才有效。如果為 null,則未收到 DTLS 錯誤。

sctpCauseCode 只讀

如果 errorDetailsctp-failure,則此屬性是一個長整型,指定了 SCTP 錯誤程式碼,用於指示 SCTP 協商失敗的原因。如果錯誤不是 SCTP 錯誤,則為 null

sdpLineNumber 只讀

如果 errorDetailsdp-syntax-error,則此屬性是一個長整型,用於標識發生語法錯誤的 SDP 行號。如果錯誤不是 SDP 語法錯誤,則為 null

sentAlert 只讀

如果 errorDetaildtls-failure,則此屬性是一個無符號長整型,指示此裝置傳送的致命 DTLS 錯誤。如果為 null,則未傳輸 DTLS 錯誤。

注意:所有 RTCError 物件的 name 屬性都設定為 OperationError

示例

在此示例中,為 RTCDataChannelerror 事件設定了一個處理程式。

js
dataChannel.addEventListener("error", (event) => {
  let error = event.error; // event.error is an RTCError

  if (error.errorDetail === "sdp-syntax-error") {
    let errLine = error.sdpLineNumber;
    let errMessage = error.message;

    let alertMessage = `A syntax error occurred interpreting line ${errLine} of the SDP: ${errMessage}`;
    showMyAlertMessage("Data Channel Error", alertMessage);
  } else {
    terminateMyConnection();
  }
});

如果錯誤是 SDP 語法錯誤(由其 errorDetail 屬性為 sdp-syntax-error 指示),則會構建一個訊息字串來顯示錯誤訊息以及錯誤發生的 SDP 中的行號。然後,使用一個名為 showMyAlertMessage() 的函式來顯示此訊息,該函式代表了此程式碼可能使用的任何輸出機制。

任何其他錯誤都將被視為終結錯誤,並導致呼叫 terminateMyConnection() 函式。

上面的示例使用 addEventListener() 來新增 error 事件的處理程式。您也可以使用 RTCDataChannel 物件的 onerror 事件處理程式屬性,如下所示:

js
dataChannel.onerror = (event) => {
  let error = event.error;

  /* and so forth */
};

規範

規範
WebRTC:瀏覽器中的即時通訊
# dom-rtcerror

瀏覽器相容性