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

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。