狂ったjava学習ノート1009---異常

12111 ワード

異常処理の仕組みは、予期せぬ異常な処理コードと正常な業務論理処理コードを分離し、
したがって、通常の業務論理判断の代わりに異常処理を使用してはならない。
エラーが予想される場合は、異常をスローするのではなく、エラーを処理するコードを提供しなければなりません。

  
  
  
  
  1. //  
  2. package bin;  
  3. import java.io.FileInputStream;  
  4. import java.io.IOException;  
  5. public class AccessExceptionMsg  
  6. {  
  7.     public static void main(String[] args)  
  8.     {  
  9.         try 
  10.         {  
  11.             FileInputStream fis = new FileInputStream("a.txt");  
  12.         }  
  13.         catch(IOException ioe)  
  14.         {  
  15.             //System.out.println(ioe.getMessage());  
  16.             ioe.printStackTrace();  
  17.         }     
  18.     }     
  19. }  
  20. /*  
  21.     getMessage():  
  22.     printStackTrace(): 。  
  23.     printStackTrace(PrintStream s): 。  
  24.     getStackTrace(): 。  
  25. */ 
  26. /*  
  27.      :a.txt( )【 】  
  28.                 java.io.FileNotFoundException:...【 】  
  29. */ 
異常処理文法構造にはtryブロックだけが必要で、catchブロックとfinallyブロックはいずれもオプションですが、catchブロックとfinallyブロックが同時にないといけません。
finally:
   return文の強制方法は戻ります。通常、方法はreturn文に実行され、プログラムは直ちにこの方法を終了しますが、必ず先にfinallyブロックのコードを実行します。ただし、プログラムにSystem.exit(1)があると、仮想マシンを終了します。finallyは実行されません。
throws声明を使用して、異常を投げます。
throws声明を使用して、異常なアイデアを投げました。現在の方法はこのタイプの異常をどう処理すればいいか分かりません。
throws Exception Class 1、Exception Class 2…
*throwsステートメントを使用した場合、プログラムはtry...catchブロックを使用して異常を捕捉する必要がありません。*
 throws声明を使用して例外を出す時に、方法を書き換える時の「2つの小」のルールがあります。サブメソッドにおいて宣言された例外のタイプは、親の方法によって宣言された例外のタイプのサブクラスまたは等しいものであり、サブメソッドには親の方法より多くの異常があるとは言えません。
throwを使って異常を出す:
throw文は例外的なものではなく、例外的な例で、子供は例外的な例を出すことができます。【throw Exception Instance】
*throwを使用する場合は必ずthrows*異常宣言をしてください。
カスタム異常クラス:

  
  
  
  
  1. public class AuctionException extends Exception  
  2. {  
  3.     //  
  4.     public AuctionException(){}  
  5.     //  
  6.     public AuctionException(String msg)  
  7.     {  
  8.         super(msg);   
  9.     }     
catchとthrowは同時に使用します。
 

  
  
  
  
  1. /*  
  2.     catch throw  
  3.      , ,  
  4.      , ,  
  5.      。  
  6. */ 
  7. public class TestAuction  
  8. {  
  9.     private double initPrice  = 30.0;  
  10.     public void bid(String bidPrice) throws AuctionException  
  11.     {  
  12.         double d = 0.0;  
  13.         try 
  14.         {  
  15.             d = Double.parseDouble(bidPrice);  
  16.         }  
  17.         catch(Exception e)  
  18.         {  
  19.             e.printStackTrace();//  
  20.             throw new AuctionException(" , !");     
  21.         }  
  22.         if(initPrice > d)  
  23.         {  
  24.             throw new AuctionException(" , !");    
  25.         }  
  26.         initPrice = d;  
  27.     }     
  28.     public static void main(String[] args)  
  29.     {  
  30.         TestAuction ta = new TestAuction()  
  31.         try 
  32.         {  
  33.             ta.bid("df");     
  34.         }     
  35.         catch(AuctionException ae)  
  36.         {  
  37.             //main bid ,  
  38.             System.out.println(ae.getMessage());      
  39.         }  
  40.     }  
異常チェーン:
 

  
  
  
  
  1. // : ,  
  2. //          
  3. package bin; 
  4. public calSal throws SalException 
  5.     try 
  6.     { 
  7.         ... 
  8.     } 
  9.     catch(SQLException sqle) 
  10.     { 
  11.             throw new SalException(sqle); 
  12.     }    
  13.     catch(Exception) 
  14.     { 
  15.         throw new SalException(e);   
  16.     } 
  17. class SalException extends Exception 
  18.     public SalException(){} 
  19.     public SalException(String msg) 
  20.     { 
  21.         super(msg);  
  22.     }    
  23.     // Throwable  
  24.     public SalException(Throwable t) 
  25.     { 
  26.         super(t); 
  27.     } 
javaの異常追跡スタック
異常対象のprintStockTrace方法は異常な追跡スタック情報を印刷するために用いられ、print StockTrance方法の入力結果によって、異常なソースを見つけて、異常なトリガのプロセスを追跡することができます。
この記事は「javaプログラム猿のブログ」から来ました。転載は作者に連絡してください。