例外処理---try...catch...finallyを使用して例外を処理

6362 ワード

try...catch...finallyを使用して例外を処理
例外処理はtry-catch-finally文によって実現される.  try {......//異常が発生する可能性のあるコード} catch( ExceptionName1 e ) {……//ExceptionName 1型異常発生時の処置} catch( ExceptionName2 e ) {……//ExceptionName 2型異常発生時の処置}[finally{……//無条件実行文}]
 
例外処理例public class Test 8_2 {   public static void main(String[] args) {     String friends[]={"lisa","bily","kessy"};     try {       for(int i=0;i<5;i++) {         System.out.println(friends[i]);       }     } catch(ArrayIndexOutOfBoundsException e) {       System.out.println("index err");     }     System.out.println("this is the end");   }}
実行結果:lisa bily kessy index err
  this is the end
 
public class DivideZero1{   int x;   public static void main(String[] args) {     int y;     DivideZero1 c=new DivideZero1();     try{       y=3/c.x;     } catch(ArithmeticException e){       System.out.println("divide by zero error!");     }     System.out.println("program ends ok!");   }}
実行結果:divide by zero error!  program ends ok!
 
 
 
 1 public class TestTryCatchFinally {
 2     public static void main(String[] args) {
 3         
 4         try {
 5             int i = 10;
 6             int j = i / 0;
 7         }catch (NullPointerException e) {
 8             System.out.println(e.getMessage());
 9         }catch(ClassCastException e) {
10             System.out.println(e.getMessage());
11         }catch(Exception e) {
12             System.out.println(e.getMessage());
13         } finally{
14              System.out.println("finally...");
15          }
16         
17         //   try、catch             ,finally          。
18         
19         System.out.println("end...");
20         
21         //       , IO          . 
22         
23         try {
24             InputStream is = new FileInputStream("abc.txt");
25         } catch (FileNotFoundException e) {
26             e.printStackTrace();
27         }
28     }
29 }

例外の取得
try異常をキャプチャする最初のステップは、try{...}文ブロックで異常をキャプチャする範囲を選択し、異常が発生する可能性のあるコードをtry文ブロックに配置することです.catch(Exceptiontype)は、catch文ブロックにおいて異常オブジェクトを処理するコードである.各try文ブロックは、生成される可能性のある異なるタイプの例外オブジェクトを処理するために1つ以上のcatch文を伴うことができる.
どのような異常が発生したかが明確に分かれば、catchのパラメータとしてこの異常クラスを使用することができる.親クラスをcatchのパラメータとして使用することもできます.ArithmeticExceptionクラスをパラメータとして使用するか、RuntimeExceptionクラスをパラメータとして使用するか、すべての異常な親クラスExceptionクラスをパラメータとして使用することができます.ただし、NullPointerExceptionなどのArithmeticExceptionクラスに関係のない例外ではなく、catchの文は実行されません.
例外の取得に関する情報:他のオブジェクトと同様に、例外オブジェクトのメンバー変数にアクセスしたり、呼び出す方法があります.getMessage()メソッドは、例外イベントの発生時にスタックを実行する内容を追跡するためのprintStackTrace()情報を得るために使用されます.
finallyが例外をキャプチャする最後のステップは、finally文によって例外処理に統一的な出口を提供することであり、制御フローがプログラムの他の部分に移行する前に、プログラムの状態を統一的に管理することができる.try、catchコードブロックで例外イベントが発生したかどうかにかかわらず、finallyブロックの文は実行されます.finally文はオプションです
実行時異常とコンパイル時異常
先に使用した例外はすべてRuntimeExceptionクラスまたはそのサブクラスであり、これらのクラスの異常の特徴は、tryとcatchを使用してキャプチャしなくてもJava自身がキャプチャでき、コンパイルが通過することである(ただし、実行時に異常が発生してプログラムの実行が終了する).
放出された例外がIOExceptionクラスの例外である場合は、コンパイルエラーを取得する必要があります.
IOException異常処理例
public class Test8_3{   public static void main(String[] args) {     FileInputStream in=new FileInputStream("myfile.txt");     int b;     b = in.read();     while(b!= -1) {       System.out.print((char)b);      b = in.read();     }     in.close();   }}
public class Test8_3 {   public static void main(String[] args) {     try{       FileInputStream in=new FileInputStream("myfile.txt");       int b;       b = in.read();       while(b!= -1) {         System.out.print((char)b);         b = in.read();       }       in.close();     }catch (IOException e) {       System.out.println(e);     }finally {       System.out.println("It’s ok!");     }   }}
転載先:https://www.cnblogs.com/justdoitba/p/7233246.html