자바 이상 깊이 분석
5006 단어 Java 이상
Checked 이상 과 Runtime 이상 의 차이 와 관계
자주 실행 되 는 런 타임 예외 몇 가 지 를 열거 합 니 다.
Error 오 류 는 일반적으로 시스템 붕괴,가상 컴퓨터 오류,동적 링크 실패 등 가상 컴퓨터 와 관련 된 문 제 를 말 합 니 다.이러한 오 류 는 복구 되 지 않 거나 포착 되 지 않 아 프로그램 이 중단 될 수 있 습 니 다.일반적으로 프로그램 에서 도 이러한 오 류 를 처리 할 수 없 기 때문에 프로그램 에서 catch 를 사용 하여 Error 대상 을 캡 처 하려 고 시도 해 서 는 안 됩 니 다.방법 정의 시 throws Error 대상 이 필요 없습니다.
Checked 이상 사용
앞에서 Checked 는 반드시 명시 적 으로 처리 해 야 한다 고 언급 했 습 니 다.그렇지 않 으 면 컴 파일 오류 가 발생 했 습 니 다.예 를 들 어 파일 입력 흐름 을 설명 하 는 것 입 니 다.
FileInputStream fis = new FileInputStream("test.md");
이 코드 컴 파일 은 오 류 를 보고 할 수 있다.
Unhandled exception type FileNotFoundException
따라서 반드시 명시 적 으로 처리 해 야 합 니 다.Checked 이상 을 처리 하 는 방식 은 보통 두 가지 가 있 습 니 다.처리 방법 을 알 고 있다 면 try..catch..블록 처리:
//Checked
try {
FileInputStream fis = new FileInputStream("test.md");
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println(" !");
}
어떻게 처리 해 야 할 지 모 르 면 방법 에서 던 지고 상위 호출 자가 처리 합 니 다.
public static void main(String[] args) throws FileNotFoundException {
//Checked
// main , JVM ,JVM ,
FileInputStream fis = new FileInputStream("test.md");
}
throw 를 사용 하여 자동 으로 이상 던 지기어떤 때 는 업무 수요 에 따라 우 리 는 프로그램 에서 스스로 이상 을 던 집 니 다.예 를 들 어 읽 은 파일 내용 이 비어 있 으 면 우 리 는 이것 이 이상 이 라 고 생각 합 니 다.이때 우 리 는 throw 를 사용 하여 주동 적 으로 이상 을 던 지고 catch 로 캡 처 할 수 있 습 니 다.
// throw
try {
FileInputStream fis = new FileInputStream("test.md");
if(fis.read() == 0) {
throw new IOException(" ");
}
} catch (IOException e) {
e.printStackTrace();
}
throw 가 runtime 이상 을 던 졌 다 면 프로그램 은 try..catch..로 캡 처 할 수도 있 고 신경 쓰 지 않 아 도 됩 니 다.이상 체인 처리
실제 기업 급 응용 에서 우 리 는 밑바닥 의 이상 을 상부 응용 에 노출 시 키 지 않 는 다.예 를 들 어 SQL 이상 을 사용자 인터페이스 에 노출 시 키 지 않 는 다.하 나 는 사용자 에 게 SQL 이상 을 보 는 것 도 도움 이 되 지 않 는 다 는 것 이다.다른 하 나 는 악성 사용자 에 게 바 텀 이상 을 노출 하 는 것 이 안전 하지 않다 는 것 이다.
그렇다면 어떻게 밑바닥 이상 을 차단 합 니까?일반적인 방법 은 프로그램 이 먼저 원시 적 인 이상 을 포착 한 다음 에 새로운 업무 이상 을 던 지 는 것 이다.새로운 업무 이상 은 사용자 에 대한 알림 정 보 를 포함 하고 이런 처리 방식 은 이상 번역 이 된다.사용 자 를 만 드 는 프로그램 이 바 텀 이상 을 차단 하 는 방법 을 보 여 줍 니 다.
// ,
public void createSubscriber(int subId) throws BusinessException {
try {
// ......
}catch(Exception e){
// ...
//
throw new BusinessException(" ");
}
}
프로그램 이 원 초적 인 이상 을 숨 기 고 필요 한 이상 알림 정보 만 제공 하면 바 텀 이상 이 표현 층 으로 확장 되 지 않도록 보장 할 수 있 습 니 다.이것 은 대상 의 패 키 징 원칙 에 완전히 부합 합 니 다.이러한 이상 을 포착 한 후에 다른 이상 을 던 지고 원시 이상 정 보 를 저장 하 는 것 은 전형 적 인 체인 처리 로 디자인 모델 에서 책임 체인 모델 이 라 고 불 린 다.
이상 한 제안 몇 개 사용 하기
우리 가 이상 을 사용 하 는 것 은 몇 가지 목 표를 실현 하기 위해 서 이다.
1.과도 하 게 사용 하거나 의존 하지 마 세 요.매우 편리 하지만 정상 적 인 논리 처 리 를 모두 이상 처리 하지 마 세 요.예 를 들 어
//
if(fileSize > 100){
Sysotem.out.println(" , ");
continue;
}
//
if(fileSize > 100){
throw new Exception(" , ");
}
// , 。