最近何か疑問に思っていますが、コードを入力するときにNetBeansなどのIDEが表示するエラーについてです(Javaを想定します)。入力中にIDEがすべてのコンパイル時エラーを識別できるかどうかを知りたいです。 ?つまり、IDEを使用してコードを実行する場合、実行時エラーのみが発生することになっていますか?
5 に答える
IDEがサポートしている場合は、[コンパイル]をクリックする前に、コード内のすべてのエラーが通知されます。これはすべてのIDEに当てはまります。私が間違っていなければ、コンパイラ自体が返すエラーを表示するものもあります。
それは本当にすべてあなたのIDE、設定、そして時にはコンパイラに依存します。
お役に立てれば。:)
これは、参照しているIDEとその設定に基づいています。
いいえEditPlus
、コンパイル時のエラーは表示されません。
Eclipse / Netbeansは、設定の出力に基づいて異なります。
つまり、IDEを使用してコードを実行する場合、実行時エラーのみが発生することになっていますか?
IDEによって異なります。たとえば、Eclipseでは、コードを実行しようとしたときにコンパイル時エラーが発生した場合、これについて警告が表示されますが、必要に応じて続行できます。その時点で、正常にコンパイルされたコードは通常どおり実行されますが、コンパイルできなかったメソッドまたはクラスでは、生成されたコードによってスローされた例外として失敗が表されます。例外がスローされる正確な場所は、コンパイルの失敗の種類によって異なります。
一般に、ほとんどの場合、エラーなしでコンパイルされるコードを実行する必要があります。Eclipseが「偽造」する機能は便利な場合もありますが、私の考えでは、エラーを修正するのではなく、使用する習慣を身につけるのは悪い考えです。
編集:質問が「コンパイル時のエラーがあるかどうかは常にわかりますか」の場合は、Eclipseからの警告を盲目的に却下しないと仮定して、はい。コンパイル時エラーのあるコードをサイレントに実行できるIDEはありません(もちろん、[エラー]ビュー、またはIDEが提供するものを確認する必要があります)。
それは非常に簡単です:
IDEに対応している場合は、作成した内容を確認し、仕様に一致するかどうかを確認しますが...
時々、あなたが書いたものをチェックすることができないでしょう、すなわちあなたが間違ったタイプ、すなわちtypecastexceptionを渡すタイプへのオブジェクトの明示的なキャスト。
コンパイラが何かを知ることができます。
int a = "abc"; // obviously wrong because "abc" is a string and not an int(eger) and COMPILE time
何かを知ることはできません(編集:findTheRunTimeErrorにtrueを渡すと、ランタイムエラーが発生します)
int a;
public someFunction(object passedIn, bool findTheRuntimeError)
{
if(!findTheRuntimeError)
{
return;
}
a = (string)passedIn;// obviously wrong cast because passedIn is cast to a string which is not an int(eger) and RUNTIME
}
これで、コンパイラが何が渡されてキャストされるかを知る方法があるため、常にランタイムエラーになります。
入力すると、単語などが完成した後、IDEがコードをコンパイルします。そうすれば、存在しない変数やその他のコンパイル時エラーなどのコーディングミスを表示できます。IDEは、構成されたJavaコンパイラーを使用してそれを行います。コマンドラインでjavacを使用して誤ったコードをコンパイルしようとすると、間違いに関する情報も表示されます。IDEは同じことを行い、javacから取得した情報を解析し、コード内でそれらを強調表示します。