이상 과 포획 이상 의 차 이 를 간단히 말 하 다

소총화
이상 던 지기:
이상 대상 을 만 들 고 이상 정 보 를 봉인 한 후 throw 를 통 해 이상 대상 을 호출 자 에 게 전달 합 니 다.
이상 을 처리 하지 않 고 이상 만 던 지 는 것 은 무책임 한 표현 이 라 고 할 수 있다.
그러나 일부 jvm 가상 컴퓨터 에서 식별 되 지 않 는 이상 을 주동 적 으로 던 질 수 있다.
수 동 으로 이상 예 를 던지다.

public static void main(String[] args) throws Exception {
        int age = 0;
        age = -100;
        if(age<0)
        {
            Exception e = new Exception();//      
            throw e;//    
        }
        System.out.println(age);
    }
이 예 는 상식 적 으로 나이 가 0 보다 작 으 면 안 되 기 때문에 수 동 으로 이상 을 던 져 야 한다.
캡 처 이상:
이상 을 캡 처 한 후 지정 한 방식 으로 처리 합 니 다.
throw 와 throws 의 차이 점:
1.던 지 는 것 이 다르다.throw 는 구체 적 인 이상 대상 을 던 지고 throws 는 추상 적 인 이상 류 를 던진다.
2.사용 위치 가 다 릅 니 다.throw 는 일반적으로 방법 체 에 사용 되 며 코드 블록 에 도 사용 할 수 있 습 니 다.throws 는 방법 설명 괄호 뒤에 만 사용 할 수 있 습 니 다.
자바 의 이상 처리:이상 을 언제 던 집 니까?이상 을 언제 잡 습 니까?
hadop 소스 코드 를 볼 때 자신 이 최근 에 하고 있 는 시스템 을 생각해 보면 이상 처리 방식 이 잘못 되 었 는 지 전통 적 인 이상 처리 방식(즉,반환 값 으로 표지 프로그램 에 나타 난 이상 상황)을 발견 했다.한편,hadop 의 많은 방법 에 대한 성명 은 이상 하 게 던 졌 고 제 시스템 의 많은 방법 에 대한 성명 은 이상 하 게 던 지지 않 았 습 니 다.이상 상황 을 판단 하고 오류 알림 을 출력 했 을 뿐 이상 을 던 지지 않 았 다.
org.apache.hadop.hdfs.protocol 패키지 의 Block 류 readFields()방법:

public void readFields(DataInput in) throws IOException {
    this.blockId = in.readLong();
    this.numBytes = in.readLong();
    this.generationStamp = in.readLong();
    if (numBytes < 0) {
      throw new IOException("Unexpected block size: " + numBytes);//    ,         ,   System.out.println    ,
    }
1.방법 성명 명 에 throws 이상 이 있 으 면 방법 체 에서 이상 을 던 지지 않 아 도 됩 니 다.
방법 성명 에 이상 설명 을 포함 할 수 있 지만 실제로는 내 놓 지 않 기 때문이다!이렇게 하 는 것 은 이상 을 위해 자 리 를 먼저 차지 하고 나중에 이런 이상 을 던 져 기 존 코드 를 수정 하지 않 아 도 된다 는 것 이 장점 이다.추상 적 인 기본 클래스 와 인 터 페 이 스 를 정의 할 때 이런 능력 은 매우 중요 하 다.그러면 파생 류 나 인터페이스 실현 류 는 이러한 사전 성명 의 이상 을 던 질 수 있다.
2.왜 어떤 방법 은 안에 throws 가 없다 고 성명 하지만 방법 체 안에 이상 이 던 져 졌 습 니까?
Runtime Exception 에서 계승 한 이상,throws 에 대한 이상 설명 없 이 던 져 질 수 있 습 니 다!런 타임 이상(비 검사 이상 unchecked exception 이 라 고도 함)에 대해 컴 파일 러 는 이상 설명 이 필요 없습니다.코드 에서 만 Runtime Exception(및 하위 클래스)형식의 이상 을 무시 할 수 있 고 다른 유형의 이상 처 리 는 컴 파일 러 에 의 해 강제 적 으로 실 시 됩 니 다.그 이 유 를 따 져 보면 Runtime Exception 은 프로 그래 밍 오 류 를 대표 한다.
3.실행 시 이상 이 자바 가상 컴퓨터 에 자동 으로 던 져 집 니 다!
1.이상 처리 기초
1.1 System.out.println 은 높 은 대가 입 니 다.System.out.println 을 호출 하면 시스템 스루풋 을 낮 출 수 있 습 니 다.
1.2 생산 환경 에서 이상 한 printStackTrace()방법 을 사용 하지 마 십시오.printStackTrace 는 기본적으로 호출 된 스 택 을 콘 솔 에 인쇄 합 니 다.생산 환경 에서 콘 솔 에 접근 하 는 것 은 비 현실 적 입 니 다.
2.이상 처리 기본 원칙
2.1 만약 당신 이 이상 을 처리 하지 못 한다 면 이 이상 을 포착 하지 마 세 요.
2.2 잡 으 려 면 이상 원 에서 가 까 운 곳 에서 잡 아야 한다.
2.당신 이 잡 은 이상 을 삼 키 지 마 세 요.
*(잡 은 이상 이지 만 아무것도 하지 않 는 다)
2.4 이상 을 다시 던 지지 않 으 면 로그 에 올 려 라.
2.5 이상 이 다시 포장 되 고 다시 던 질 때 statck trace 를 인쇄 하지 마 십시오.
2.6 사용자 정의 이상 클래스 를 사용 합 니 다.이상 을 던 질 때마다 자바.lang.Exception 을 던 지지 마 십시오.방법의 호출 자 는 throws 를 통 해 어떤 이상 이 처리 되 어야 하 는 지 알 수 있 기 때문에 자기 설명 입 니 다.
2.7 업무 논 리 를 작성 하면 터미널 사용자 가 복구 할 수 없 는 오류 에 대해 시스템 은 검사 하지 않 은 이상(unchecked exception)을 던 져 야 합 니 다.제3자 가방 을 만들어 다른 개발 자 에 게 사용 하면 복구 할 수 없 는 오류 에 대해 검사 할 이상(checked exception)을 사용 해 야 합 니 다.
2.8 throws 문 구 를 쓰 는 것 이 불편 하 다 고 해서 검사 해 야 할 이상 을 밝 히 지 마 세 요.
2.9 응용 단계 의 오류 나 복구 할 수 없 는 시스템 이상 은 검사 하지 않 은 이상(unchecked exception)으로 던 집 니 다.
*(주 의 는 오류 입 니 다.복구 할 수 없습니다.예 를 들 어 설정 파일 오류)
2.10 이상 한 입도 에 따라 당신 을 조직 하 는 방법
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기