201874040116- 리 신화 "객체 지향 프로그래밍 (자바)"주 10 학습 요약

 

계획

함유량

이 작품은 과정 속

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

어디에서 작업이 요구 사항

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

작업 학습 목표

  

 

1. 매스터 자바 예외 처리 기술;

2. 사용의 주장을 이해;

3. 로그의 목적을 이해;

4. 마스터 프로그램 기본 디버깅 기술.

 

I 부 : 이론적 지식 제 7 장에 요약
  1. 이상 (예외)

    1) 이상 객체의 Throwable 오류를 캡슐화 파생 된 클래스의 객체 인스턴스이다.

    2) 자체의 이상은 문법과 특정 유전 구조를 갖는다.

    3) 모든 예외는의 Throwable로부터 상속하지만, 두 가지로 다음 층됩니다 오류 및 예외

      1.Error 클래스 계층 구조는 내부 오류 및 자원 고갈 자바 런타임 시스템 오류에 대해 설명합니다.

      2.Exception 계층은 두 가지로 분할되어, 이상에 의해 발생하는 프로그램 에러는, 예를 들면의 RuntimeException 속하는 오류 변환의 종류, 바운드 어레이 액세스 불능 액세스 널 포인터. 또 다른 지점은 다른 예외가 포함되어 있습니다.  

  2. 던져 (발생) 예외 : 절을 던졌습니다 나타내는 예외 문을 던져의 방법이다.

    1) 복수의 예외를 나타낼 수 절 동시에 발생,이 방법은 다음의 예외 처리를 설명되지 않지만, 그것은 그 던져.

    2) 방법)) 이상 또는 제어 할 수없는 (오류없이 체크 된 예외를 던질 수있는 모든 방법을 선언해야합니다, 또는 (RuntimeException을을 피해야한다.

    3) 예외 객체 throw 문에 의해 달성된다 던진다. 새로운 예외 : EOFException를 throw

   예외 클래스 만들기 (3)

    1) 표준 예외 클래스 때 적절하게 문제를 명확하게 설명하지.

    2) 유도 된 클래스를 생성 실질적으로 동일한, 일반적으로는 기본 생성자 상세히 설명하며 빌더 정보를 포함한다 포함한다.

  4. 캐치 제외

    1)이었다 잡은 예외는 프로그램의 종료가 발생합니다 않았습니다.

    2) 캐치 예외를 사용할 필요가 / catch 문 블록을 시도

      try 블록의 코드가 예외를 throw 1. 경우, 프로그램은 코드를 실행 try 블록의 코드의 나머지 부분과 캐치 절 프로세서를 건너 뜁니다.

      은 try 문 블록은 예외가 발생하지 않는 방법 2. 다음 프로그램은 캐치 절을 건너 뜁니다.

  스택 트레이스 :  프로그램 실행 메소드 호출시 특정 위치를 포함하는 방법 호출 목록의 프로그램 실행 방법.

  6. 팁 예외 메커니즘 :

    1) 대신에 예외 처리가 간단한 테스트 아니다

    2) 지나치게 이상하지 얇아를 수행

    3) 예외 구조를 사용

    4) 이상 억제하지 마십시오

    5) 에러가 검출되면, "거친"더 이상 자유 방임

    6) 수줍어 이상 전송하지 마십시오

 

  7. 주장 (어설) :

    1) 구문 : 조건을 주장 또는 조건을 주장 : 표현

    2) 에러 주장은 테스트 단계에서 위치 및 내부 절차를 결정하기 위해 사용되어야한다.

파트 II : 실험 부분

  실험 1 :

 명령 줄 환경 :

  프로그램 1 :

 

  프로그램 2 :

 

 이클립스 환경 :

  프로그램 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을; 
   } 

   공공  정적  무효 메인 (문자열 []에 args) 
   { 
      시도 (=에서 var에 새로운 스캐너 (System.in)) 
      { 
         System.out.print ( "n을 입력을" );
         INT N = in.nextInt (); 
         계승 (N); 
      } 
   } 
}

결과 :

  시험 절차 2 :

코드 :

// 积极的处理方式
수입 는 java.io * ; 

공공  클래스 ExceptionTest {
     공공  정적  무효 메인 (문자열의 인수는 []) 
   { 
       시도 { 
           
           FileInputStream의 FIS는 = 새로운 ( "身份证号.txt 인"FileInputStream에를 ); 
           에서의 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을" ; 
       }
       넣다(); 
       에서 System.out.println (N); 
     } 
}

결과 :

  

실험 3 : 프로그래밍 연습 

 

 

실험 4 : 어설, 로깅, 디버깅 기술 검증 실험

  

  실험 절차 1 :

 

코멘트를 추가 한 후 :

 

 

  실험 절차 2, 실험 프로그램 3  :

 

  

 

 

 

 

 

    

추천

출처www.cnblogs.com/whitepaint/p/11775796.html