>  기사  >  Java  >  Java 예외 처리 기초 및 기본 원칙

Java 예외 처리 기초 및 기본 원칙

php是最好的语言
php是最好的语言원래의
2018-08-08 11:16:041790검색

오늘 하둡 소스코드를 보다가 최근 작업하고 있는 시스템을 생각해보니 예외처리 방식이 많이 잘못됐고, 여전히 전통적인 예외처리 방식(즉, return을 사용하는 방식)을 따르고 있는 것을 발견했습니다. 프로그램의 비정상적인 상황을 식별하기 위한 값). Hadoop에서 많은 메서드를 선언하면 예외가 발생하지만 내 시스템에서 많은 메서드를 선언하면 예외가 발생하지 않습니다. 비정상적인 상황을 감지하고 오류 메시지만 출력할 뿐, 예외를 발생시키지는 않습니다.

org.apache.hadoop.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 예외가 있으면 메서드 본문에서 throw할 필요가 없습니다. 예외. 메서드 선언에 예외 설명을 포함할 수 있지만 실제로 예외를 발생시킬 수는 없기 때문입니다! 이렇게 하면 먼저 예외를 위한 위치가 있고 나중에 기존 코드를 수정하지 않고도 이 예외를 발생시킬 수 있다는 장점이 있습니다. 이 기능은 파생 클래스나 인터페이스 구현 클래스가 미리 선언된 예외를 발생시킬 수 있도록 추상 기본 클래스와 인터페이스를 정의할 때 중요합니다.

2. 일부 메서드 선언에는 예외가 발생하지 않지만 메서드 본문에서는 예외가 발생하는 이유는 무엇입니까? RuntimeException에서 상속된 예외는 예외 설명 발생 없이 발생될 수 있습니다! 런타임 예외(확인되지 ​​않은 예외라고도 함)의 경우 컴파일러에는 예외 설명이 필요하지 않습니다. RuntimeException 유형의 예외(및 해당 하위 클래스)는 코드에서만 무시될 수 있습니다. 다른 유형의 예외 처리는 컴파일러에 의해 시행됩니다. 그 이유는 RuntimeException이 프로그래밍 오류를 나타내기 때문입니다.

3. 런타임 예외는 Java 가상 머신에 의해 자동으로 발생됩니다!

  1. 예외 처리 기본
    1.1 System.out.println은 비용이 많이 듭니다. System.out.println을 호출하면 시스템 처리량이 줄어듭니다.

    1.2 프로덕션 환경에서는 특이한 printStackTrace() 메서드를 사용하지 마세요. printStackTrace는 기본적으로 호출 스택을 콘솔에 인쇄합니다. 프로덕션 환경에서 콘솔에 액세스하는 것은 비현실적입니다.

  2. 예외 처리의 기본 원칙
    2.1 예외를 처리할 수 없다면 포착하지 마세요.

    2.2 잡으려면 예외 소스에 가깝게 잡아야 합니다.

    2.3 잡은 예외를 삼키지 마세요.
    * (적발된 예외이지만 아무 작업도 수행하지 않음)

    2.4 예외를 다시 발생시키고 싶지 않은 경우 로그에 기록하세요.

    2.5 예외가 다시 패키징된 후 다시 발생하는 경우 statck 추적을 인쇄하지 마세요.

    2.6 예외를 발생시켜야 할 때마다 java.lang.Exception을 발생시키는 대신 사용자 정의 예외 클래스를 사용하십시오. 메서드 호출자는 throw를 통해 어떤 예외를 처리해야 하는지 알 수 있으므로 자체 설명적입니다.

    2.7 비즈니스 로직을 작성하는 경우 시스템은 최종 사용자가 복구할 수 없는 오류에 대해 확인되지 않은 예외를 발생시켜야 합니다. 다른 개발자가 사용할 수 있도록 타사 패키지를 작성하는 경우 복구할 수 없는 오류에 대해 시스템은 다음과 같이 해야 합니다. 확인되지 않은 예외를 발생시킵니다. 확인된 예외를 사용하세요.

    2.8 Throw 문을 작성하면 사용하기 불편해지므로 확인이 필요한 예외를 선언하는 데 실패하지 마십시오.

    2.9 확인되지 않은 예외와 함께 응용 프로그램 수준 오류 또는 복구할 수 없는 시스템 예외가 발생합니다.
    * (오류이므로 구성 파일 오류와 같이 복구할 수 없음을 의미합니다.)

    2.10 예외의 세분성에 따라 메서드 구성

관련 권장 사항:

기본 지식 java 예외 및 오류 처리

Java의 기본 다시 배우기(16): 예외 요약

위 내용은 Java 예외 처리 기초 및 기본 원칙의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.