目次:
- コンパイル時エラー
- ランタイムエラーはあらゆる種類の時に発生する可能性があります。特定の時刻にエラーが発生する可能性があります。以下のリストは、ランタイムエラーが発生する可能性がある場合のアイデアを提供します:
ビデオ: エラーを解決できないエンジニアは致命的!5つの解決策 2024
Javaアプリケーションでのエラーは、さまざまな時に発生する可能性があります。ただし、次のセクションで説明するように、エラーが発生するタイミングをコンパイル時と実行時の2つのカテゴリに大別することができます。
コンパイル時エラー
コンパイラはアプリケーションコードをJavaバイトコードに変換します。このプロセスでは、人間が読めるコードを記述し、それをJava Runtime Environment(JRE)が理解できるものに変換します。
<!このプロセスを実行するためには、コンパイラはコードを解析しなければなりません。つまり、アプリケーションが何をしたいのかを明白に判断する方法でコードを読み取ります。それをやりたいと思っています。あいまいなコードを記述するための規則を破ると、コンパイラはエラーメッセージを表示します。このメッセージは実際には一種の例外です。解析 は、人間が読める形式のコードなど、入力した内容を読み込み、Javaバイトコードなどの別のものに変換することを意味します。アプリケーションはユーザーの入力を解析することもできます。たとえば、ユーザーは、アプリケーションコードが数字に変わる文字列を入力できます。 <!したがって、構文解析は、ある種の入力を読み込み、その入力を特定の方法で解釈し、次に解釈された入力に基づいて出力を生成する行為です。パーザは、入力が期待どおりでないときにエラーを生成します。
たとえば、ユーザーが文字Cを含む文字列を入力したときに、123などの数値を含む文字列を期待すると、パーサは入力が正しくないことを示す例外を生成します。 <!コンパイラは通常、何が間違っているのか、どこでエラーが発生したのかを正確に伝えるので、コンパイル時エラーは最も簡単に処理できます。たとえ情報が正確ではないとしても、コンパイラは、少なくともあなたが壊れたコードの正しい領域に移動して、そこに含まれるエラーを探すことができます。
Java言語の仕組みを誰もが正確に理解できるように、開発者はJava言語の仕様を作成します。この仕様には、Backus-Naur Form(BNF)という特殊言語の言語要素が含まれています。 BNFを使用することは、誰かが誤解する危険性がないように、言語を記述するきわめて正確な方法です。Java言語のBNFのサンプルは、コンピュータサイエンス(Daimi)でご覧いただけます。この仕様を読むことについてあまり心配しないでください。ほとんどの開発者は、BNFを使用する言語(つまりコンパイラ開発者のドメイン)のために解釈することを決して学ばない。
ランタイムエラー
Javaコンパイラは、コード内のすべてのエラーを見つけることができません。コードの形式が正しい場合(つまり、アプリケーションを作成する要素の入力に間違いがない場合)、コンパイラはエラーを検出しません。たとえば、数値を4ではなく5に初期化すると、コンパイラは実際に4を入力することを考えていないため、エラーを見つけることができません。これらの種類の間違いは
ランタイムエラー
- アプリケーション実行中のある時点で発生するエラー。
ランタイムエラーはあらゆる種類の時に発生する可能性があります。特定の時刻にエラーが発生する可能性があります。以下のリストは、ランタイムエラーが発生する可能性がある場合のアイデアを提供します:
初期化:
アプリケーションが最初に起動するとき - ユーザにインターフェースを提供する前に、初期化段階。これは、変数を間違った型に設定したり、変数を初期化する前に変数を使用しようとすると、気付かれることになります。この時間中にほとんどのアプリケーションが必要なリソースを開くため、多くのリソース関連のエラーも初期化中に発生します。 動作モード: アプリケーションが初期化されると、動作モードになります。ユーザーインターフェイスがある場合、ユーザーとのやりとりを開始します。これは、ユーザーの入力が最も重要な時です。
ユーザー(またはシステムなどのアプリケーション出力の受信者)が出力が正しくないことがわかるため、この時点では初期化されていない変数も間違っています。この間、データファイルなどのリソースに対するユーザーの要求によってもエラーが発生します。
-
バックグラウンド処理: バックグラウンド処理エラーのほとんどは、環境(ネットワーク接続の喪失など)、リソースの欠落(ファイルの紛失など)、不正確に初期化された変数、タスクを実行します。いくつかのタスクは、他のタスクよりバックグラウンドでより一般的に実行されます。例えば、文書を印刷することまたはインターネットからリソースをダウンロードすることは、一般的にはバックグラウンドで実行されるが、ユーザはアプリケーションをフォアグラウンドで引き続き使用する。
-
シャットダウン: ユーザー(システムアカウントを含む)がアプリケーションにそれが不要になったことを通知すると、アプリケーションはシャットダウンフェーズを実行します。このシャットダウンフェーズでは、アプリケーションはファイルを閉じて、アプリケーションがオペレーティングシステムに混乱を与えないようにするためのハウスキーピング作業を行います。
このフェーズで発生する最も一般的なエラーは、アプリケーションが使用したリソースを解放したり、データをディスクに保存したりしていないことです。もちろん、コーディングエラーはいつでも発生する可能性があり、この操作フェーズは例外ではありません。実際に開いているのは4つだけのときに5つのファイルを閉じるようにアプリケーションに指示できます。
-
JREは、検出された実行時エラーのほとんどを例外として表示します。ただし、JREはアプリケーションのすべてのエラーをキャッチしません。また、アプリケーションの出力を見て、出力が特定の入力に対する期待値と一致するかどうかを判断する必要があります。 さらに、何らかの方法で損傷していないことを保証するために使用するリソースの状態を調べることが重要です。たとえば、ファイルに保存する必要のあるデータは、アプリケーションがシャットダウンしたときに実際にファイルに保存されるようにする必要があります。
Java 8はセキュリティに重点を置いています。つまり、アプリケーションを操作する際に、より多くのSecurityExceptionインスタンスが表示されます。
-
セキュリティ例外が増えても、コードに誤りがあることやJava 8がバグでいっぱいであることを意味するわけではありません。つまり、人々がアプリケーションを使用する際にセキュリティ問題を引き起こす可能性のある問題についてJava 8が自動的に検出して通知します。 JavaでSecurityExceptionのドキュメントが表示されます。ネット。もちろん、あなたはハブブブが何であるかを知りたいでしょう。