SyntaxError

SyntaxError オブジェクトは、構文的に不正なコードを解釈しようとした場合のエラーを表します。

解説

SyntaxError は、 JavaScript エンジンが、コードを解析中に言語の構文に従わないトークンまたはトークンの順序に遭遇した場合に発生します。

構文

new SyntaxError([message[, fileName[, lineNumber]]])

引数

message Optional
人間が読めるエラーの説明
fileName Optional
例外を引き起こしたコードを含むファイル名
lineNumber Optional
例外を引き起こしたコードの行番号

プロパティ

SyntaxError.prototype
SyntaxError オブジェクトにプロパティを追加することができます。

メソッド

グローバルな SyntaxError オブジェクトは、自分自身のメソッドを持っていませんが、プロトタイプチェーンを通していくつかのメソッドを継承しています。

SyntaxError インスタンス

プロパティ

SyntaxError.prototype.constructor
インスタンスのプロトタイプを作成した関数を指定します。
SyntaxError.prototype.message
エラーメッセージです。 ECMA-262 において SyntaxError は自身の message プロパティを提供するべきとされていますが、 SpiderMonkey では、 Error.prototype.message を継承しています。
SyntaxError.prototype.name
エラー名です。 Error から継承しています。
SyntaxError.prototype.fileName
このエラーが発生したファイルのパスです。 Error から継承しています。
SyntaxError.prototype.lineNumber
このエラーが発生したファイル内の行番号です。 Error から継承しています。
SyntaxError.prototype.columnNumber
このエラーが発生した行内の桁数です。 Error から継承しています。
SyntaxError.prototype.stack
スタックトレースです。 Error から継承しています。

メソッド

SyntaxError プロトタイプオブジェクトには自分自身のメソッドはありませんが、 SyntaxError のインスタンスはプロトタイプチェーンを通していくつかのメソッドを継承します。

SyntaxError のキャッチ

try {
  eval('hoo bar');
} catch (e) {
  console.error(e instanceof SyntaxError); // true
  console.error(e.message);                // "missing ; before statement"
  console.error(e.name);                   // "SyntaxError"
  console.error(e.fileName);               // "Scratchpad/1"
  console.error(e.lineNumber);             // 1
  console.error(e.columnNumber);           // 4
  console.error(e.stack);                  // "@Scratchpad/1:2:3\n"
}

SyntaxError の生成

try {
  throw new SyntaxError('Hello', 'someFile.js', 10);
} catch (e) {
  console.error(e instanceof SyntaxError); // true
  console.error(e.message);                // "Hello"
  console.error(e.name);                   // "SyntaxError"
  console.error(e.fileName);               // "someFile.js"
  console.error(e.lineNumber);             // 10
  console.error(e.columnNumber);           // 0
  console.error(e.stack);                  // "@Scratchpad/2:11:9\n"
}

仕様書

仕様書 状態 備考
ECMAScript Latest Draft (ECMA-262)
SyntaxError の定義
ドラフト
ECMAScript 2015 (6th Edition, ECMA-262)
SyntaxError の定義
標準
ECMAScript 5.1 (ECMA-262)
SyntaxError の定義
標準
ECMAScript 3rd Edition (ECMA-262) 標準 初回定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
SyntaxErrorChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 1.0nodejs 完全対応 あり

凡例

完全対応  
完全対応

関連情報