function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Dev 長尾拓磨Dev 長尾拓磨 

エラーページのカスタマイズ

配布するアプリケーションを作成しているのですが、
アプリ中でエラーが発生すると、ヘッダーフッターの表示を消していたページから急にSalesforceのエラーページに飛んでしまい、ユーザーが困惑するような動作となっており、困っています。

そこで、エラーページを下記いずれかの方法でカスタマイズしたいと思います。

・Visualforceページを作成し、エラー時の遷移先をこれに指定する
・デフォルトのエラーページをカスタマイズする

調べてみても方法が見つけられず、知っている方がいましたら教えていただきたいです。
よろしくお願いします。
Best Answer chosen by Dev 長尾拓磨
Taiki YoshikawaTaiki Yoshikawa
エラー発生時にシステムエラーページが表示されるのは、通常のエラー判定処理が不足しているためです。
(値の存在チェックなど)

出来る限りシステムエラーにならないように判定処理を行うのがオススメです。
予期せぬエラーが発生したときのためExceptionエラー対応を行います。

ガバナ制限エラーは発生しないように設計する必要があります。

All Answers

Taiki YoshikawaTaiki Yoshikawa
システムエラー発生時の対応ですが try-catch処理で対応可能です。
下記のような書き方が基本構成となります。
try {
   // 通常の処理
} catch (Exception e) {
    // システムエラー発生時の処理
}

その他、より細かいエラー情報を取得できるDmlExceptionなどの処理が用意されています。

Exception クラスおよび組み込み例外
https://developer.salesforce.com/docs/atlas.ja-jp.204.0.apexcode.meta/apexcode/apex_classes_exception_methods.htm
Dev 長尾拓磨Dev 長尾拓磨
返答ありがとうございます。
通常のエラーはデフォルトのエラー画面を流用せず、try-catchを使って画面遷移すべき、ということですね。

ガバナ制限を超えたときはLimitExceptionが発生してこれはcatchできないそうなのですが、
この場合はそもそも起きないように条件を付けて実装するのがスタンダードでしょうか。
Taiki YoshikawaTaiki Yoshikawa
エラー発生時にシステムエラーページが表示されるのは、通常のエラー判定処理が不足しているためです。
(値の存在チェックなど)

出来る限りシステムエラーにならないように判定処理を行うのがオススメです。
予期せぬエラーが発生したときのためExceptionエラー対応を行います。

ガバナ制限エラーは発生しないように設計する必要があります。
This was selected as the best answer
Dev 長尾拓磨Dev 長尾拓磨
ガバナ制限を含め、全体的にエラーを起こさないようコーディングし、
最悪、起きてもハンドリングしてエラー画面やエラーメッセージに飛ぶように設計する、というのが設計方針として求められているのですね。

初歩的な質問に丁寧に回答いただきありがとうございました。