자바 이상 유형 및 처리

5849 단어 Java이상 류
이상 정의
이상 은'의외,예외'라 는 뜻 으로 비정 상 상황 이다.이상 은 본질 적 으로 프로그램 상의 오류 로 프로그램 논리 오류 와 시스템 오 류 를 포함한다.이상 한 처 리 는 기본적으로 폭로 하 는 것 이 고 프로그램 개발 에서 프로그램 이 보고 싶 지 않 은 것 이다.이상 의 가장 기본 적 인 정 보 는 스 레 드 의 스 택 정보 입 니 다.
2.이상 한 구조 와 분류
图片
Throwable 은 주로 Error 와 Exception 으로 나 뉜 다.
오류:Error 클래스 와 그의 하위 클래스 의 인 스 턴 스 는 JVM 자체 의 오 류 를 대표 합 니 다.오 류 는 프로그래머 가 코드 로 처리 해 서 는 안 되 고 누 워 서 해결 하면 되 며 반항 하지 마 세 요.흔히 볼 수 있 는 잘못 은 다음 과 같다.
图片
이상:Exception 및 그의 하위 클래스 는 프로그램 이 실 행 될 때 보 내 는 각종 예상 치 못 한 사건 을 대표 합 니 다.자바 이상 처리 메커니즘 에 의 해 사 용 될 수 있 으 며,이상 처리 의 핵심 이 며,프로그램 에서 해결 할 수 있 는 것 은 모두 일 을 부 르 지 않 는 다.흔 한 이상 이 이렇게 많아 요.
图片
3.이상 한 처리 와 포획
이상 하 게 처리 하려 면 이상 을 먼저 잡 아야 합 니 다.이상 을 어떻게 잡 습 니까?자바 가 저 에 게 몇 개의 키 워드 를 제공 해 주 었 습 니 다.모든 키 워드 는 어떻게 사용 합 니까?
1.try,catch 는 바로 이상 을 캡 처 하 는 것 입 니 다.catch 안의 이상 유형 은 캡 처 할 수 있 는 유형 입 니 다.보통 여러 개의 이상 이 있 으 면 위 에서 아래로 의 순 서 는 이상 범위 가 점점 넓 어 집 니 다.주:ErrorCodeException 의 정 의 는 사용자 정의 이상 을 참고 할 수 있 습 니 다.

  public static void second(String[] args) {
      try {
          throw new ErrorCodeException("1123");
      } catch (ErrorCodeException e) {
          e.printStackTrace();
      }catch (Exception e){
          e.printStackTrace();
      }
  }
2.try catch finally 는 finally 키 워드 를 추 가 했 습 니 다.바로 이상 한 후에 도 몇 가지 일 을 할 수 있 습 니 다.예 를 들 어 흔히 볼 수 있 는 입력 흐름 을 닫 고 출력 흐름 은 프로그램의 마지막 고집 입 니 다.

public static String readFileContent(String fileName) {
  File file = new File(fileName);
  BufferedReader reader = null;
  StringBuffer sbf = new StringBuffer();
  try {
      reader = new BufferedReader(new FileReader(file));
      String tempStr;
      while ((tempStr = reader.readLine()) != null) {
          sbf.append(tempStr);
      }
      reader.close();
      return sbf.toString();
  } catch (IOException e) {
      e.printStackTrace();
  } finally {
      if (reader != null) {
          try {
              reader.close();
          } catch (IOException e1) {
              e1.printStackTrace();
          }
      }
  }
  return sbf.toString();
}
3.throw 는 주로 이상 을 만 드 는 데 사 용 됩 니 다.프로그램 에서 이상 을 던 져 야 할 수도 있 습 니 다.예 를 들 어 우리 게임 서버 게임 논리 검증 클 라 이언 트 파라미터 가 통과 하지 않 으 면 사용자 정의 이상 을 자발적으로 던 집 니 다.
4.throws 는 주로 방법 서명 에 사 용 됩 니 다.파일 을 읽 거나 반사 할 때 try catch 를 사용 하지 않 으 면 방법 서명 후 처리 해 야 할 이상 이 한 무더기 있 습 니 다.이상 은 처리 할 방법 이 있 거나 시스템 에 줄 때 까지 상부 의 호출 방법 에 계속 던 질 것 이다.
4.사용자 정의 이상
자바 에 내 장 된 이상 이 이상 상황 을 명확 하 게 설명 하지 못 할 때 자신의 이상 을 만들어 야 합 니 다.
이상 클래스 를 사용자 정의 하려 면 Exception 클래스 를 계승 하면 됩 니 다.클래스 에 자신의 처 리 를 추가 할 수 있 습 니 다.이상 을 만 들 때 들 어 오고 이상 을 처리 하 는 곳 에 서 는 구체 적 인 내용 에 따라 처리 할 수 있 습 니 다.아래 팝 업 프로 세 스 응용 을 볼 수 있 습 니 다.

/**
* @author   
*/
public class ErrorCodeException extends Exception {
   //   
   private String errorCode;
   //    
   public ErrorCodeException(String errorCode){
       super(errorCode);
       this.errorCode = errorCode;
  }
   public String getErrorCode() {
       return errorCode;
  }
}
5.이상 한 응용
게임 개발 에서 모든 프로 토 콜 의 처 리 는 매개 변수 가 합 리 적 인지 검증 합 니 다.만약 에 매개 변수 가 합 리 적 이지 않 은 것 을 발견 하면 저 희 는 사용자 정의 매개 변수 이상 을 던 져 같은 입구 에서 캡 처 하고 그 중의 오류 코드 를 분석 하여 클 라 이언 트 에 게 직접 보 낼 수 있 습 니 다.층 층 의 함수 가 되 돌아 오 는 것 을 피 했다.
1.인쇄 스 택
가끔 은 디 버 깅 코드 를 하 는 과정 에서 함수 의 호출 처가 너무 많아 서 게임 이 중단 되 기 어렵 습 니 다.우 리 는 함수 의 호출 경 로 를 알 고 싶 은 상황 에서 이상 을 마음대로 던 질 수 있 습 니 다.시스템 은 호출 스 택 을 인쇄 하여 문 제 를 찾 는 데 도움 을 줄 수 있 습 니 다.또 하나의 작은 기 교 를 얻 었 습 니까?

/**
* @author   
*/
public class Aain {
   public static void first(String[] args) throws Exception {
       second(args);
  }
   public static void second(String[] args) throws Exception {
       throw new Exception("1123");
  }
   public static void main(String[] args) throws Exception {
           first(args);
  }
}
2.팝 업 프로 세 스

/**
* @author   
*/
public class Aain {
  public static void first(String[] args) throws ErrorCodeException {
      second(args);
  }
  public static void second(String[] args) throws ErrorCodeException {
      third(args);
      System.out.println("1111");
  }
  public static void third(String[] args) throws ErrorCodeException {
      throw new ErrorCodeException("1123");
  }
  public static void main(String[] args){
      try {
          first(args);
      } catch (ErrorCodeException e) {
          e.printStackTrace();
      }
  }
}
图片
위의 큰 스 택 인쇄 를 통 해 알 수 있 듯 이 인쇄 된 문 구 는 실행 되 지 않 았 습 니 다.게임 서버 의 메시지 처리 처 에서 ErrorCode Exception 을 캡 처 합 니 다.메시지 처리 함수 가 이 이상 을 던 지면 입구 에서 오류 코드 를 캡 처 하고 분석 하여 클 라 이언 트 에 게 되 돌려 줍 니 다.한 층 한 층 의 반환 함 수 를 피 할 수 있 습 니 다.
조심 하 다
1.자바 프로그램 은 다 중 스 레 드 일 수 있 습 니 다.모든 스 레 드 는 독립 된 실행 흐름 이 고 독립 된 함수 호출 스 택 입 니 다.프로그램 에 스 레 드 가 하나 밖 에 없다 면 코드 처리 이상 이 없 으 면 프로그램 이 종 료 될 수 있 습 니 다.다 중 스 레 드 라면 코드 에 의 해 처리 되 지 않 은 이상 이 있 는 스 레 드 만 끝 날 수 있 습 니 다.
2.finally 는 이상 을 재 처리 하 는 능력 이 없습니다.
3.이상 만 포착 하고 이상 을 처리 하지 않 으 면 문제 가 발견 되 지 않 습 니 다.
총결산
이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 글 에 관심 을 가 져 주 실 수 있 기 를 바 랍 니 다!

좋은 웹페이지 즐겨찾기