JavaScript/URIError
表示
URIError
は、URI(Uniform Resource Identifier)関連の関数が不正なパラメータで使用された場合に発生するエラーオブジェクトです。このエラーは、encodeURI()
、decodeURI()
、encodeURIComponent()
、decodeURIComponent()
などの関数で不正な入力を処理しようとした場合に投げられます[1]。
構文
[編集]new URIError() new URIError(message) new URIError(message, options)
message
: エラーの説明を示す文字列。省略可能。options
: エラーに関する追加情報を含むオブジェクト。cause
プロパティを含めることができます。省略可能。
例
[編集]不正なURIデコードによるURIErrorの発生
[編集]以下のプログラムは、不正なシーケンスをデコードしようとした際に URIError
が発生する例を示しています。
try { decodeURIComponent('%'); // 不完全なパーセントエンコーディングシーケンス } catch (e) { console.log(e instanceof URIError); // true console.log(e.message); // "URI malformed" }
このプログラムでは、decodeURIComponent()
関数で不完全なパーセントエンコーディングシーケンスをデコードしようとしているため、URIError
が発生します。
不正なURIエンコードによるURIErrorの発生
[編集]以下のプログラムは、エンコードできない文字をエンコードしようとした際に URIError
が発生する例を示しています。
try { // サロゲートペアの前半部分のみを含む不正なUTF-16文字列 encodeURI(String.fromCharCode(0xD800)); } catch (e) { console.log(e instanceof URIError); // true console.log(e.message); // "URI malformed" }
このプログラムでは、サロゲートペアの前半部分のみを含む不正なUTF-16文字列をエンコードしようとしているため、URIError
が発生します。
注意点
[編集]- 一般的な原因:
URIError
は通常、不正なURI文字列をエンコード/デコードしようとした場合に発生します。 - パーセントエンコーディング: パーセントエンコーディングが正しくない場合(例: '%'の後に16進数が2桁続かない)に発生することが多いです。
- 継承:
URIError
はError
オブジェクトを継承しているため、すべてのError
プロパティとメソッドを持っています。
脚註
[編集]- ^ これは、URI操作関数の使用時に不正な文字列が検出されたことを示すために使用されます。