エラーの対処方法

ホーム > 基本的な例 > 例02

説明

DEXTUploadX5 操作時に発生したエラーは、コンポーネント作成時に発生したエラーを除き、すべてonDX5Errorコールバック関数に渡されます。

/**
 * コンポーネントまたは内部で渡されたすべてのエラーおよび警告メッセージは、onDX5Errorコールバック関数で取得できます。
 * @param {string} id エラーまたは警告が発生したコンポーネントのID。
 * @param {string} code エラーコード。
 * @param {string} msg エラーメッセージ
 */
function onDX5Error(id, code, msg) {
	alert(id + " => " +  code + "\n" + msg);
}

onDX5Error関数がページにない場合、エラーをチェックする方法がありません。

onDX5Error関数に加えて、DEXTUploadX5にはエラーを個別に記録するロギング機能がありません。

onDX5Error関数は、開発中に発生した文法や論理的なスクリプトのエラーに対して責任を負いません。

アップロード後にサーバー側でエラーが発生した場合は、アップロードに失敗したと判断します。HTTPはGET/POSTリクエストをする時、サーバーでコードが正常に完了すればHTTPステータスコード200を返す(ファイルアップロードと同じ)。DEXTUploadX5がサーバーから200コード値を受け取ると、ファイルアップロードが完了したことに気づき、onDX5UploadCompletedコールバック関数を呼び出します。

一方、サーバーが400、403、404、500のようなHTTPステータスコードを受信した場合、エラーが発生したとみなし、それ以上の操作を停止し、onDX5Errorコールバック関数を呼び出します。したがって、サーバーサイドのコードはエラーを無視せず、例外が発生したときに500エラーが配信されるように対処する必要があります。もしサーバーがtry - catch文のようにエラーを保持し、エラーを渡さなかった場合、サーバーは200の値を返すので、DEXTUploadX5はアップロードが成功したと誤解します。また、サーバーでエラーが発生した場合、エラーページをきれいな形式で装飾してクライアントに送ることが多い。しかし、レスポンスページのステータスコードが200であれば、DEXTUploadX5は正常にアップロードが完了したと判断します。

この例では、submitボタンが押されると404エラーが発生するようにサーバー側を設定しています。

function onDX5Created(id) {
	var dx = dx5.get(id);
	// アップロードパスは実際には存在しません。
	// そのため、送信ボタンをクリックするとサーバーで 404 エラーが発生します。
	dx.setUploadURL(dx5.canonicalize("../service/not-existed-service.do"));
}