[javascript deepdave第47章&48章]エラー処理&モジュール
第47章|エラー処理|
47.1エラー処理が必要
エラーのないコードを書くことはできません.そのため、エラーは常に発生する可能性があります.発生したエラーを無視すると、プログラムは強制的に終了します.
try...catch文を使用してエラーに適切な応答を行うと、プログラムは強制的に終了することなくコードを実行し続けることができます.
47.2 try...catch...最後の一言
デフォルトでは、エラーを処理する方法は2つあります.
異常の場合(例えば
24172仕入先勘定科目のcatch文のerr変数は、tryコードブロックに含まれる文でエラーが発生した場合に生成されます.catchコードブロックでのみ有効です.
エラーが発生するかどうかにかかわらず、finallyは1回実行する必要があります.
これもPythonで一生懸命勉強しました.
47.3 Errorオブジェクト
Errorジェネレータ関数は、エラーオブジェクトを生成します.Errorジェネレータ艦崇は、エラーを詳細に説明するエラーメッセージをパラメータとして渡すことができる.
Errorジェネレータ関数によって生成されたエラーオブジェクトには、メッセージ構成とスタック構成があります.Message propertyの値は、Errorコンストラクション関数に引数として渡されるエラーメッセージであり、stack propertyの値は、デバッグのためにエラーを引き起こす呼び出しスタック情報を表す文字列である.
JavaScriptは、Errorコンストラクション関数を含む7つのErrorオブジェクトを作成できるErrorコンストラクション関数を提供します.コンストラクション関数によって作成されたすべてのエラーオブジェクトのプロトタイプはエラーです.プロトタイプを継承します.
[コンストラクション関数/インスタンス]
47.4投げドア
throw 표현식;
throw文の式は値の影響を受けませんが、通常はエラーオブジェクトを指定します.エラーが投げ出されると、catch文はエラー変数を生成し、投げ出されたエラーオブジェクトを割り当てます.次にcatchコードブロックが実行されます.
47.5エラー伝播
呼び出しスタックの下(実行中のシードコンテキストがプッシュされる前にプッシュされる実行コンテキストの方向)に伝播する.
(1)でtest 2関数を呼び出すと、(2)でtest関数を呼び出し、(3)でfoo関数を呼び出し、foo関数は(4)でエラーを投げ出す.この場合、foo関数が投げ出したエラーは、呼び出し元に次のように伝播し、グローバルにキャプチャされます.
このような投げ出されたエラーが捉えられなければ,呼び出し者方向に伝播する.この場合、投げ出されたエラーをキャプチャして適切な応答を行うと、プログラムを強制的に終了することなくコードの実行ストリームを復元することができる.どこにもthrowエラーがキャプチャされていない場合、プログラムは強制的に終了します.
第48章|モジュール|
48.1モジュールの一般的な意味
モジュール向け:モジュールとアプリケーションを構成する再利用可能なコードブロックを指す.通常、モジュールは機能に応じてファイル単位で分離されます.このとき,モジュールを成立させるには,モジュールに独自のファイルスキャン(モジュールスキャン)が必要である.
独自のファイルスキャン機能を持つモジュールの資産(モジュールに含まれる関数、変数、オブジェクトなど)は、基本的に非公開です.(パッケージ)
しかし、アプリケーションから完全に分離された独立したモジュールは再利用できないため、存在する意味がありません.モジュールは、アプリケーションまたは他のモジュールで再使用する必要があります.したがって、モジュールは、開示が必要な資産に対して明示的に選択的に開示することができる.これを出口と言います.
公開(export)モジュールの資産は、他のモジュールで繰り返し使用できます.このとき,公開モジュール資産を用いたモジュールをモジュールユーザと呼ぶ.モジュールユーザーは、モジュール公開(export)の資産の一部または全部を選択し、自分のリポジトリにロードして再使用できます.import.
48.2 JavaScriptとモジュール
JavaScriptランタイム環境ノード.jsはモジュールシステムの事実上の標準CommonJSを採用し、独立したアップグレードを経て、基本的にCommonJS規範に従う.だから、ノード.js環境では、各ファイルに独立したファイルスキャン(モジュールスキャン)があります.
48.3 ES 6モジュール(ESM)
この場合、ES 6はクライアントJavaScriptで実行されるモジュール機能も追加される.IEを除いて、ほとんどのブラウザで使用できます.ES 6モジュールの使用は非常に簡単です.type=「module」ツリーをscriptラベルに追加すると、ロードされたJavaScriptファイルがモジュールとして動作します.ESMファイルが標準のJavaScriptファイルではないことを明確にするために、ESMのファイル拡張子にmjsを使用することをお勧めします.<script type = "module" scr = "app.mjs"> </script>
ESMは、ファイル自体の独立したモジュールスキャンを提供します.したがって、モジュールでvarキーワードとして宣言された変数はグローバル変数ではなく、windowオブジェクトのpropertyではありません.
48.3.2 exportキーワード
モジュールには独立したモジュールスキャンがあります.したがって、モジュール内で宣言されたすべての識別子は、基本的にモジュール内でのみ参照できます.モジュール内部で宣言された識別子を外部に公開し、他のモジュールが再使用できるようにするには、exportキーワードを使用します.
<script type = "module" scr = "app.mjs"> </script>
48.3.3 importキーワード
importキーワードを使用して、他のモジュールで公開されている識別子を自分のモジュールscopeにロードします.他のモジュールからエクスポートされた識別子名でインポートする必要があります.ESMの場合、ファイル拡張子は省略できません.
上記の例のappです.mjsはアプリケーションのエントリポイントであり、scriptラベルを使用してロードする必要があります.でもmjsはappこれはmjsのimport文によってロードされる依存性です.したがって、例48〜12.mjsはscriptラベルでロードする必要はありません.
モジュールは、エクスポートされた識別子名を一度に指定することなく、名前を一度にインポートできます.このとき、インポートされた識別子は、asの後ろに指定された名前のオブジェクトにpropertyとして割り当てられる.
また、
export default x => x * x;
defaultキーを使用する場合、var、let、constキーは使用できません.defaultキーとともにエクスポートされたモジュールは{}を使用して任意の名前でインポートされません.//app.mjs
import square from './lib.mjs'
console.log(square(3)); //9
Reference
この問題について([javascript deepdave第47章&48章]エラー処理&モジュール), 我々は、より多くの情報をここで見つけました https://velog.io/@boram_in/자바스크립트-딥다이브-47장-에러처리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol