Lightning データサービスでのエラーの処理

Lightning Data サービスは、サーバのリソース (レコード、オブジェクトなど) にアクセスできない場合にエラーを返します。

たとえば、ワイヤアダプタへの入力が正しくない (例: レコード ID が不正、必須項目が欠落している) 場合には、エラーが発生します。レコードがキャッシュになく、サーバがオフラインである場合にもエラーが返されます。また、サーバ上でリソースが削除されたり、共有や表示の設定が更新されたりすることで、そのリソースにアクセスできなくなる場合もあります。

エラー値 

FetchResponse エラーオブジェクトは、取得 API の応答オブジェクトの後にモデリングされます。これには、レスポンスボディ、状況コード、メッセージが含まれます。

  • body (オブジェクトまたは配列) — 基になる API により定義されたレスポンスボディ。
  • ok (Boolean) — 応答が成功であったかどうかを示します。エラーの場合、ok は常に false で、状況コードは 400 ~ 599 の範囲内となります。
  • status (数字) — 応答の状況コードが含まれます。たとえば、リソースが見つからない場合は 404、内部サーバエラーでは 500 が含まれます。
  • statusText (文字列) — 状況コードに対応する状況メッセージが含まれます。たとえば、状況コード 404 では NOT_FOUND が含まれます。

例 

エラーオブジェクトを使用して、getRecord ワイヤアダプタから返されるエラーを処理します。

1<template>
2  <lightning-card title="Handle Error" icon-name="standard:contact">
3    <template lwc:if={error}>
4      <p>{error}</p>
5    </template>
6  </lightning-card>
7</template>

JavaScript コードは、エラー本体が配列またはオブジェクトであるかどうかを確認して、エラーメッセージを返します。

1import { LightningElement, api, wire, track } from "lwc";
2import { getRecord } from "lightning/uiRecordApi";
3
4const fields = [
5  // This invalid field causes @wire(getRecord) to return an error
6  "Contact.invalidField",
7];
8
9export default class WireGetRecordDynamicContact extends LightningElement {
10  @api recordId;
11
12  @track error;
13
14  @wire(getRecord, { recordId: "$recordId", fields })
15  wiredRecord({ error, data }) {
16    if (error) {
17      this.error = "Unknown error";
18      if (Array.isArray(error.body)) {
19        this.error = error.body.map((e) => e.message).join(", ");
20      } else if (typeof error.body.message === "string") {
21        this.error = error.body.message;
22      }
23      this.record = undefined;
24    } else if (data) {
25      // Process record data
26    }
27  }
28}

ボディペイロード 

エラーのレスポンスボディは、そのエラーを返す API によって異なります。

  • getRecord ワイヤアダプタなどの UI API 読み取り操作では、error.body はオブジェクトの配列として返されます。
  • createRecord ワイヤアダプタなどの UI API 書き込み操作では、error.body はオブジェクトとして返され、多くの場合、オブジェクトレベルおよび項目レベルのエラーを伴います。
  • Apex の読み取りおよび書き込み操作では、error.body はオブジェクトとして返されます。
  • オフラインエラーなどのネットワークエラーでは、error.body はオブジェクトとして返されます。

関連トピック

The Japanese Summer '24 guide is now live

日本語の Summer '24 ガイドが公開されました! 「Component Reference (コンポーネントリファレンス)」は、以前と同様にコンポーネントライブラリにあります。