201874040116-李新「オブジェクト指向プログラミング(Java)の」週10学習の概要

 

プロジェクト

コンテンツ

この作品は、コースに属し

 https://www.cnblogs.com/nwnu-daizh/

どこの仕事でこの要件

https://www.cnblogs.com/nwnu-daizh/p/11435127.html 

ジョブの学習目標

  

 

1.マスターJavaの例外処理技術。

2.用法の主張を理解します。

3.ログの目的を理解します。

4.マスタープログラムの基本的なデバッグ手法。

 

パートI:理論的知識の第VII章の概要
  1.異常(例外):

    1)異常な目的は、Throwableのエラーをカプセル化し、派生クラスのオブジェクトインスタンスです。

    2)異常は、独自の文法と特定継承構造を有します。

    3)すべての例外はThrowableのから継承されたが、2つのブランチに次の層されます。エラーと例外

      1.Errorクラス階層は、内部エラーや資源枯渇のJavaランタイム・システム・エラーを示しています。

      2.Exception階層は、2つのブランチに分けられる:異常に起因するプログラムエラーは、例えば、のRuntimeExceptionに属する:エラー変換の種類を、境界配列アクセスのうち、アクセスヌルポインタ。別のブランチは、その他の例外が含まれています。  

  2. スロー(スロー)例外:throws節を示すために例外文を投げる方法インチ

    1)句は、同時に例外複数を示すことができるスロー、この方法は、これらの例外処理を説明しないが、それはそれらのスロー。

    2)の方法は、すべての方法は、()のRuntimeExceptionの異常や制御不能(エラー)なしで、チェック例外をスローすることがあり、または避けるべきで宣言する必要があります。

    3)例外オブジェクトをthrow文によって達成されるスローします。新しいてEOFExceptionをスローします

   3.例外クラスを作成します。

    1)標準の例外クラスは、時に適切に問題を明確に記述していません。

    一般的にはデフォルトのコンストラクタを含める必要があり、派生クラスを作成する2)実質的に同一で詳細に説明し、ビルダー情報を含みます。

  4.例外をキャッチ

    1)例外は、プログラムの終了になりますキャッチされていません。

    2)キャッチ例外を使用する必要が/ catch文のブロックを試してみてください

      1. tryブロックのコードが例外をスローした場合、プログラムは、tryブロック内のコードの残りの部分をスキップし、catch節のプロセッサは、コードを実行します。

      try文のブロックが例外をスローしませんどのように2、その後、プログラムがcatch節をスキップします。

  スタックトレース:  プログラムの実行メソッドの呼び出し中に特定の位置を含むメソッド呼び出しリストのプログラム実行プロセス。

  6.ヒント例外メカニズム:

    1)の代わりに、例外処理の簡単なテストではありません

    2)過度に異常はない間伐を行います

    3)例外の階層を使用して

    4)異常に抑制しないでください

    5)エラーが検出されると、「厳しい」よりも良好な自由放任

    6)内気な異常転写もしないでください

 

  7.アサーション(アサート):

    1)構文:条件をアサートまたは状態をアサート:式

    2)誤ったアサーションは、テスト段階中に位置し、内部手続を決定するために使用されるべきです。

パートII:実験の部

  実験 1:

 コマンドライン環境:

  プログラム1:

 

  プログラム2:

 

 Eclipseの環境:

  プログラム1:

 

  プログラム2:

 

未処理の未チェック例外とチェック例外の違いは、ステージの誤差です。

  実験 2:

  試験手順 1:

 

コード:

輸入 java.utilの。* ; 

パブリック クラスStackTraceTest 
{ 
   / ** 
    *数の階乗を計算します
    * @param 非負の整数NA 
    * @returnのn個!= 1 * 2 *。* N
     * / 
   パブリック 静的 INT階乗(int型N)
   { 
      するSystem.out.println( "階乗(" + N + ")" )。
      VARウォーカー = StackWalker.getInstance()。// 堆栈跟踪
      walker.forEach(System.outに::のprintln)。      
      int型のR;
      もし(N <= 1)、R = 1;
      そうでなければ、R = N *階乗(N - 1 )。
      System.out.println( "リターン" + R)。
      戻りR; 
   } 

   パブリック 静的 ボイドメイン(文字列[]引数)
   { 
      試みる(=でVAR 新しいスキャナ(System.in))
      { 
         System.out.print( "入力N:" )。
         INT、N = in.nextInt()。
         階乗(N)
      } 
   } 
}

結果:

  試験手順 2:

コード:

// 积极的处理方式
輸入 java.io. * ; 

パブリック クラスExceptionTest {
     公共 静的 ボイドメイン(文字列引数[])
   { 
       試みる{ 
           
           FileInputStreamのFIS = 新しい FileInputStreamを( "身份证号の.txt"を)。
           中BufferedReaderの = 新しいをBufferedReader(新しいInputStreamReaderの(FIS)); 
           文字列M = 新しい文字列()。
           列N = 新しい文字列()。
           しばらく((M = in.readLine())!= nullを){
               N - + = M + "\ N-" ; 
           } 
           in.close(); 
           のSystem.out.println(N-); 

       } 
       キャッチ{(にFileNotFoundException E)
           のSystem.out.println( "ファイルが見つかりません" ); 
           e.printStackTrace() ; 
       } キャッチ(IOExceptionをE){ 
           するSystem.out.println( "エラー学生" ); 
           e.printStackTrace(); 
       } 
    
    } 
}
// 消极的处理方式
輸入 java.io. * ; 

パブリック クラス{
     公共 静的 ボイドメイン(文字列引数[])スロー  にIOException 
     { 
         FileInputStreamのFIS = 新しい FileInputStreamを( "身份证号の.txt"を)。
        中BufferedReaderの = 新しいをBufferedReader(新しいInputStreamReaderの(FIS)); 
       文字列M、N = 新しい文字列()。
       一方、((M = in.readLine())!= NULL ){ 
           N + = M + "の\ n" 
       }
       in.close(); 
       System.out.println(N)
     } 
}

結果:

  

実験 3:プログラミング演習 

 

 

実験 4 :アサート、ロギング、デバッグスキル検証実験

  

  実験手順 1

 

コメントを追加した後:

 

 

  実験手順2、実験プログラム3 

 

  

 

 

 

 

 

    

おすすめ

転載: www.cnblogs.com/whitepaint/p/11775796.html