エラー(エラー)と例外(異常)がスローやキャッチを可能にするために、クラスの継承のみのThrowableインスタンスのJavaコード内のjava.lang.Throwableクラスのサブクラスです。
例外とエラーが異なる異常な状況のJavaプラットフォームの設計者の分類を反映して、例外は、プログラムが実行されている、と開発者は、適切な治療を捕獲しなければならない不測の事態に予想されます。エラー手段は、通常の状況下で起こることは稀であること、エラーのほとんどが非正規手続き、回復不能な状態になります。開発者は、キャプチャする必要はありません。
エラーの場合、エラーが回復不能な処理技術である、それは確かにプログラムの異常終了につながります。エラーチェックとエラータイプは、実行時に発生過半数に属していません。例外は、チェック(チェック)の例外に分けることができ、(チェック)の例外をチェックしません、あなたは異常なプロセスを表示して、ソースコードでキャプチャする必要がありますチェックすることができ、コンパイルの検査の一部があります。異常は、キャプチャするかどうかを判断するために、特定のニーズに応じて、通常、論理エラーをコードして回避することができ、実行時例外と呼ばれていない、コンパイラは必須ではありません。
以下は、一般的なエラーと例外のとおりです。
1つの実行時例外(RuntimeExceptionが):
NullPropagation:空指针异常;
ClassCastException:类型强制转换异常
IllegalArgumentException:传递非法参数异常
IndexOutOfBoundsException:下标越界异常
NumberFormatException:数字格式异常
2.非実行時例外:
ClassNotFoundException:找不到指定 class 的异常
IOException:IO 操作异常
3.エラー(エラー):
NoClassDefFoundError:找不到 class 定义异常
StackOverflowError:深递归导致栈被耗尽而抛出的异常
OutOfMemoryError:内存溢出异常
スタックオーバーフローエラーを引き起こす可能性があり、次のJavaコード。
// 通过无限递归演示堆栈溢出错误
class StackOverflow {
public static void test(int i) {
if (i == 0) {
return;
} else {
test(i++);
}
}
}
public class ErrorEg {
public static void main(String[] args) {
// 执行StackOverflow方法
StackOverflow.test(5);
}
}
実行出力は次のようになります。
Exception in thread "main" java.lang.StackOverflowError
at ch11.StackOverflow.test(ErrorEg.java:9)
at ch11.StackOverflow.test(ErrorEg.java:9)
at ch11.StackOverflow.test(ErrorEg.java:9)
at ch11.StackOverflow.test(ErrorEg.java:9)
最終的にjava.lang.StackOverflowErrorをエラーにつながった無限の再帰呼び出しを経由して上記のコード。