JavaScript の例外処理メソッドを一緒に分析しましょう
この記事では、JavaScript に関する関連知識を提供します。主に例外処理に関連する問題を紹介します。プログラムを作成する過程で、いくつかのエラーは避けられません。これらのエラーを通じて、エラーの発生を回避する方法を学ぶことができます。見てみましょう。この状況でどうすればよいのか、次回はどうすれば改善できるのか、皆さんのお役に立てれば幸いです。
[関連する推奨事項: JavaScript ビデオ チュートリアル 、Web フロントエンド ]
エラーは、プログラミングプロセス。プログラムを作成する過程では必ずエラーが発生しますが、そのエラーを通じて、そのような状況を回避する方法や、次回より良くする方法を学ぶことができます。
JavaScript では、コード ステートメントが緊密に結合されてエラーが発生した場合、残りのコード ステートメントを使用し続けることは意味がありません。その代わりに、私たちは間違いからできるだけ丁寧に回復しようとします。このようなエラーが発生すると、JavaScript インタプリタは例外処理コードをチェックし、例外ハンドラがない場合、プログラムはエラーの原因となった関数に戻ります。
例外ハンドラーが見つかるか、最上位関数に到達するまで、コール スタック上のすべての関数に対してこれを繰り返します。これにより、プログラムがエラーで終了し、プログラムがクラッシュします。
一般的に、これを処理するには 2 つの方法があります:
例外をスローする- 実行時に発生した場合問題を意味のある方法で処理することはできません。問題をスローすることをお勧めします。
function openFile(fileName) { if (!exists(fileName)) { throw new Error('找不到文件 ' + fileName) } // ... }
例外のキャッチ#スローされた例外は、実行時に発生する可能性が高くなります。意味が捉えられ、処理される場所
try { openFile('../test.js') } catch(e) { // 优雅地处理抛出的期望 }
これらの操作をさらに詳しく理解しましょう。
例外をスローする
「ReferenceError: spec is not found」のようなメッセージが表示される場合があります。これは、throw ステートメントによってスローされた例外を表します。
構文
throw «value» // 不要这样做 if (somethingBadHappened) { throw 'Something bad happened' }
例外としてスローできるデータ型に制限はありませんが、JavaScript には特別な組み込み例外タイプがあります。前の例で見たように、そのうちの 1 つはエラーです。これらの組み込み例外タイプは、例外メッセージよりも詳細な情報を提供します。
#Error
#Error タイプは、一般的な例外を表すために使用されます。このタイプの例外は、ユーザー定義の例外を実装するために最も一般的に使用されます。利用可能な 2 つの組み込みプロパティがあります。- message — Error コンストラクターにパラメーターとして渡されるコンテンツ。たとえば、new Error('これはエラー メッセージです') です。メッセージ プロパティを通じてメッセージにアクセスできます。
const myError = new Error('Error!!!') console.log(myError.message) // Error!!!
- stack — このプロパティは、エラーの原因となったファイルの履歴 (呼び出しスタック) を返します。スタックの最上位にはメッセージも含まれており、その後に、最新/分離されたエラー ポイントから最も外側の原因ファイルまでの実際のスタックが続きます。
Error: Error!!! at <anonymous>:1:1
try { // 要运行的代码 } catch (e) { // 发生异常时要运行的代码 } [ // 可选 finally { // 无论发生异常都始终执行的代码 } ]
function foo() { try { return true } finally { console.log('Execute finally') } }
const user = '{"name": "D.O", "age": 18}' try { // 代码运行 JSON.parse(params) // 在出现错误的情况下,其余的代码将永远无法运行 console.log(params) } catch (err) { // 在异常情况下运行的代码 console.log(err.message) // params is not defined }
コールバック関数
コールバック関数を使用します (推奨されません)。以下に示すように、2 つのパラメーターを受け取ります:async function(code, (err, result) => { if (err) return console.error(err) console.log(result) })
在 if (err) 块中返回某些内容或将其他指令包装在 else 块中都很重要。否则,您可能会遇到另一个错误。例如,当您尝试访问 result.data 时,result 可能未定义。
Promises
使用 promises 的 then 或者 catch,我们可以通过将错误处理程序传递给 then 方法或使用 catch 子句来处理错误。
promise.then(onFulfilled, onRejected)
也可以使用 .catch(onRejected) 而不是 .then(null, onRejected) 添加错误处理程序,其工作方式相同。
让我们看一个 .catch 拒绝 Promise 的例子。
Promise.resolve('1') .then(res => { console.log(res) // 1 throw new Error('go wrong') // 抛出异常 }) .then(res => { console.log(res) // 不会被执行 }) .catch(err => { console.error(err) // 捕获并处理异常 ——> Error: go wrong })
使用 async/await 和 try-catch
使用 async/await 和 try-catch-finally,处理异常是轻而易举的事。
async function func() { try { await nonExistentFunction() } catch (err) { console.error(err) // ReferenceError: nonExistentFunction is not defined } }
如何处理未捕获的异常
现在我们已经很好地理解了如何在同步和异步代码块中执行异常处理,让我们回答本文最后一个待解决的问题 :我们如何处理未捕获的异常?
在浏览器中
我们可以使用 window.onerror() 方法来处理未捕获的异常。每当运行时发生错误时,该方法会在 window 对象上触发 error 事件。
onerror() 的另一个实用做法是:当站点中的图片或视频等数据加载出错时,可以用该方法触发某些操作。例如,提供一张加载出错时的图片,或显示一条消息。
<img src="logo.png" onerror="alert('Error loading picture.')" />
在 Node.js 中
EventEmitter 模块派生的 process 对象可以订阅事件 uncaughtException。
process.on('uncaughtException', () => {})`
我们可以传递一个回调来处理异常。如果我们尝试捕获这个未捕获的异常,进程将不会终止,因此我们必须手动完成。
uncaughtException 仅适用于同步代码。对于异步代码,还有另一个称为 unhandledRejection 的事件。
process.on('unhandledRejection', () => {})
决不要尝试为基本 Error 类型实现 “捕获所有” 处理程序。这将混淆所发生的一切,并损害代码的可维护性和可扩展性。
关键要点
throw 语句用于生成用户定义的异常。在运行时,当 throw 遇到语句时,当前函数的执行将停止,控制权将传递给 catch 调用堆栈中的第一个子句。如果没有 catch 子句,程序将终止
JavaScript 有一些内置的异常类型,最值得注意的是 Error,它返回 Error 中的两个重要属性:stack 和 message。
try 子句将包含可能产生异常的代码,catch 子句会在发生异常时执行。
对于异步代码,最好使用 async/await 配合 try-catch 语句。
可以捕获未处理的异常,这可以防止应用程序崩溃。
不要觉得麻烦,异常处理可以帮助您提高代码的可维护性、可扩展性和可读性。
【相关推荐:javascript视频教程、web前端】
以上がJavaScript の例外処理メソッドを一緒に分析しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。
