자바 이상 유형 및 처리
이상 은'의외,예외'라 는 뜻 으로 비정 상 상황 이다.이상 은 본질 적 으로 프로그램 상의 오류 로 프로그램 논리 오류 와 시스템 오 류 를 포함한다.이상 한 처 리 는 기본적으로 폭로 하 는 것 이 고 프로그램 개발 에서 프로그램 이 보고 싶 지 않 은 것 이다.이상 의 가장 기본 적 인 정 보 는 스 레 드 의 스 택 정보 입 니 다.
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.이상 만 포착 하고 이상 을 처리 하지 않 으 면 문제 가 발견 되 지 않 습 니 다.
총결산
이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 글 에 관심 을 가 져 주 실 수 있 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.