2016-09-14 9 views
0

Pythonでは、関数の引数が間違ったデータ型であるか、間違ってフォーマットされているためにデータを操作できないなどのエラーが発生した場合、端末にエラーを出力し、それを殺すためにsys.exit()を実行してください。私はエラー処理、例外処理、またはそれが何であっても習得していないので、その方法を使用しています。 JavaScriptのエラー/例外/処理は単純ですが、コードの実行を停止させたり、発生させたりしますか?もしそうでなければ、どうすればいいのですか?JavaScriptでの実行を停止する

私のページが特定のURLと一致している場合にのみ、機能(拡張コードセット全体)を機能させたいとします。ページのURLが間違っているときに関数を呼び出すと、コンソールにメッセージが記録され、スクリプトの実行が停止するはずです。それ、どうやったら出来るの? tryブロックでテストしてみてください。エラー/例外の処理に使用される特殊な構文を使用する必要がありますか?

+0

はい、JS(およびPython)では例外がどのように機能しますか。 throwは、最も近い 'catch'ハンドラまでコードの実行を中止します。 – Bergi

+0

コードの性質(非同期または同期)も考慮する必要があります。例えば、HTTP要求の後にエラーを投げても、要求も関連するコールバックも停止しません。 – MinusFour

+0

@Bergi私はそれを期待していませんでした。私は 'catch 'を使ってエラーを報告して終了することができると思いました。私は私の関数でそれを使用していますが、私はまだ返されたオブジェクトを取得します。 – Melab

答えて

0

ページのURLが間違っているときに関数を呼び出すと、コンソールにメッセージが記録され、スクリプトの実行が停止するはずです。それ、どうやったら出来るの?

URLが受け入れられない場合は、errorに問題の説明を記載してください。例えば

throw new Error("operation x not supported at this page location"); 

この結果、メッセージがコンソールに記録されます。 の不在の制御try...catchステートメントまたはthrowステートメントまたはそれにつながる関数呼び出しの周囲に、エラーがスローされたときに実行を停止するようにしてください。

コメントに記載されているように、開始されたが完了していない非同期操作からまだ行われていないコールバックはキャンセルされません。

エラーがスローされたときにtry...catchステートメントが有効な場合は、throwステートメントの後に(その他の)コードを実行せずに、仲介関数呼び出しを再開せずに実行を再開します。


コメントに反応してEDIT:関数の内部でそれをキャッチすることなく、throw文を実行関数が戻らない

。つまり、呼び出しコードで呼び出しを行った直後に値を返して実行を再開しません。

ユーザーがtryブロックを記述すると、エラーをスローする関数への直接的または間接的な呼び出しが囲まれている場合、呼び出しブロックはtryブロックの実行時に復元されます。 tryブロック内の関数呼び出し用に作成されたスタックフレームは、コールスタックからポップされ、呼び出された関数をそれ以上実行することなく破棄されます。実行は、tryブロックに関連付けられたcatchブロック、catchパラメータとしてスローされたエラー、またはcatchブロックが提供されていない場合はfinallyブロックで再開します。 システムは、tryブロック内にスローされたエラーをコンソールに自動的に記録しません。

ユーザが書き込まれたtryブロックが見つからない場合、すべての呼び出しスタックフレームがポップされ、スレッドが停止し、スローされたエラーがコンソールに記録されます。したがって、tryブロックの外側にエラーを投げると、exit関数を呼び出さずに実行が停止します。

Pythonでtry...cacthの同等は少し異なる構文でthrowに使用raise文でtry...exceptのようです。

+0

これは、オブジェクトがそれを使用する関数によって返されるのを防ぎますか? – Melab

+0

次に、エラーを生成する関数を呼び出す関数はどのように停止するはずですか? Pythonでは、間違った型を特定の関数に渡す関数を書くと、すべての実行が停止します。 – Melab

関連する問題