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

浏览器兼容性