/ *
- 概要と分類異常
- 1、Java言語で、通常と呼ばれるプログラムの実装では発生しません「異常」。(開発プロセスの構文エラーと論理エラーは珍しいことではありません)
- 発生したJavaプログラムの実行中に2.一般的な異常事象は、2つのカテゴリに分けることができます。
- 2.1Error(また、既知のエラー):深刻な問題は、Java仮想マシンによって解決することはできません。以下のような:内部JVMシステムエラー、資源の枯渇やその他の深刻な状態。
- たとえば、次のようにStackOverflowErrorとOutOfMemoryErrorが発生。一般的には、処理対象のコードを記述しないでください。あなたは、既存のコードを変更する必要があります。
- 2.2Exception:エラーや不慮の外部要因をプログラミングすることによって引き起こされる他の一般的な問題は、あなたが処理対象のコードを使用することができます。
- たとえば:NULLポインタへのアクセス、配列は存在しないファイル、ネットワーク接続の中断を読み取ろうと、範囲外の添字。
- 3これらのエラーの場合は、2つのソリューションがあります:まず、それはエラーがプログラムを終了遭遇します。
- もう一つの方法は、エラー検出、エラーメッセージのプロンプト、およびエラー処理を考慮し、プログラミング中にプログラマです。
- 理想的には、コンパイル時にエラーをキャプチャしますが、多少の誤差は、実行時にのみ発生します。たとえば、次の除数は、境界配列の添字を横切る、0であります
- 図4に示すように、タイミング登場分類に応じて、異常な異常な異常なコンパイルして実行時に分割することができます。
- 異常4.1コンパイル時(また、より深刻な異常な科目を、チェックすると呼ばれる)は、例外が処分しなければならないことを要求し、コンパイラを指します。これは、外部要因による実行時例外では一般的なプログラムです。
- 異常なコンパイラは、すべてのキャプチャやコンパイラを宣言する必要がありますJavaプログラムが必要です。プログラムは処理しない場合、これらの例外については、それは予期しない結果をもたらす可能性があります。
- 4.2ランタイム例外(とも呼ばれる未チェック未確認の例外)は、コンパイラが処分を必要としない異常な力を指します。一般的に、論理的なプログラミングエラーを意味し、
- プログラマは、積極的にそれらが現れる異常を避ける必要があります。異常なjava.lang.RuntimeExceptionクラスとそのサブクラスが実行されています。
- そのような異常が共通しているので、全体のプロセスは、プログラムのインパクトの読みやすさと効率性であるかもしれない場合は、これらの例外の場合、それは、処理されない場合があります。
- 5、一般的な例外
- 5.1例外はjava.langパッケージにあるトップレベルの親クラスThrowableを、です。以下は、2つのサブクラスとエラー例外あり、実行時例外の下のサブクラスサブクラスのRuntimeExceptionの例外があります
- 例外は、例外の下で他のサブカテゴリーを指定してコンパイルされています。たとえば、次のようにIOException、ClassNotFoundExceptionが、CloneNotSupportedException。
- 5.2一般的な例外
- ランタイム:
- 1、NullPointerExceptionが発生
- 2、ArrayIndexOutOfBoundsExceptionが
- 3は、ClassCastException
- 4、NumberFormatExceptionが
- 5、InPutMismatchException
- 6、はArithmeticException
- 編集:
- 1は、IOException
- 2、FileNotFoundExceptionを
- 3、にClassNotFoundException
* /
package exception;
import java.io.File;
import java.io.FileInputStream;
import java.util.Date;
import java.util.Scanner;
import org.junit.Test;
public class Exception1 {
public static void main(String[] args) {
//栈溢出,例如局部变量循环引用。
main(args);//java.lang.StackOverflowError
//堆溢出,创建对象过多
Double[] d = new Double[1024*1024*1024];//java.lang.OutOfMemoryError
}
@Test
//空指针异常与角标越界异常
public void method() {
//空指针
String s = null;
System.out.println(s.charAt(1));
//角标越界
int[][] array = new int [6][];
array[0] = new int[10];
System.out.println(array[0][10]);
}
@Test
//类型转换异常,数据类型异常
public void method1() {
//类型转换异常
Object o = new Date();
String s = (String)o;
//数据类型异常
String str = "123F";
int n = Integer.parseInt(str);
}
@Test
//输入数据不匹配异常,算数异常
public void method2() {
//输入数据不匹配异常
Scanner scan = new Scanner(System.in);
int n = scan.nextInt(); //当在控制台输入小数时,报异常
//算数异常
int a = 11;
int b = 0;
System.out.println(a / b);
}
@Test
//编译期错误,IDE中会报错,
public void method3() {
File file = new File("E:\\eclipse-workspace\\Contacts\\src1.txt");
FileInputStream fis = new FileInputStream(file);
int date = fis.read();
while(date != -1) {
System.out.print((char)date);
date = fis.read();
}
fis.close();
}
}