이상 한 지혜 를 처리 하 다
2381 단어 이상 하 다
1. 이상 무시, 위로 던 지기
일반적으로 Socket 을 열 때 나타 나 는 이상 은 위로 던 져 야 하 며, 이상 을 먹 어 서 는 안 되 며, 상부 의 호출 자 들 이 이러한 이상 을 감지 하지 못 하 게 해 야 한다.우 리 는 Hadoop 의 RPC 서버 초기 화 에서 이 점 을 볼 수 있다.Socket 을 열 때 이상 을 던 지면 이 이상 을 계속 위로 던 져 맨 위 에 올 라 갑 니 다. 즉, Namenode 의 초기 화 로 인해 Namenode 초기 화 에 실 패 했 습 니 다.RPC 에서 Server 의 Socket 은 빠 질 수 없 는 구성 요소 이기 때문에 이 구성 요소 가 초기 화 에 실패 하면 서비스 가 완전 하지 않 습 니 다.그래서 이 실 패 를 상부 호출 자 에 게 알려 야 한다.
일반적으로 최 하층 처리 IO 의 이상 은 위로 던 져 야 한다.예 를 들 어 Hadoop 의 RPC 서버 에 있 는 channel Write (Writeable ByteChannel channel, ByteBuffer buffer) 에 서 는 channle 의 write 방법 에 이상 이 생 겨 위로 던 지기 때문에 channel Write 방법 은 IOException 을 던 집 니 다.최상 위 처리 논리 에서 IOException 을 캡 처 하여 해당 하 는 업무 처 리 를 하 는 것 을 볼 수 있 습 니 다. 로 그 를 기록 하거나 이 클 라 이언 트 링크 를 닫 습 니 다.
2. 밑바닥 이상 을 업무 이상으로 전환
볼 드 모 트 에서 볼 드 모 트 는 밑바닥 의 IOException 을 볼 드 모 트 Exception 으로 전환 하 는 것 을 볼 수 있다.재 미 있 는 것 은 Voldemort Exception 은 Runtime Exception 이기 때문에 Voldemort 의 코드 는 더욱 깨끗 하고 상쾌 해 보 입 니 다.
3. 이상 은 후속 처리 절차 에 영향 을 줄 수 있 습 니 다.
다음은 Hadoop 의 RPC 서버 의 코드 입 니 다.
try {
count = c.readAndProcess();
} catch (InterruptedException ieo) {
LOG.info(getName() + ": readAndProcess caught InterruptedException", ieo);
throw ieo;
} catch (Exception e) {
LOG.info(getName() + ": readAndProcess threw exception " + e + ". Count of bytes read: " + count, e);
count = -1; //so that the (count < 0) block is executed
}
if (count < 0) {
if (LOG.isDebugEnabled())
LOG.debug(getName() + ": disconnecting client " +
c.getHostAddress() + ". Number of active connections: "+
numConnections);
closeConnection(c);
c = null;
}
read and Process 방법 이 던 진 Interrupted Exception 을 제외 한 다른 이상 이 포착 되 었 음 을 볼 수 있 습 니 다 (물론 IOExcetion 포함). 이상 을 기록 하 는 동시에 count = - 1 을 설정 하여 표 지 는 이번 읽 기와 쓰기 처리 에 실 패 했 습 니 다.뒤의 논리 에서 count 가 0 보다 작 으 면 이 링크 가 손상 되 었 음 을 설명 하고 closeException 방법 으로 이 링크 를 닫 아야 합 니 다.
4. 특정 이상 은 특별한 배려 가 필요 하 다
위의 코드 에서 Interrupted Exception 은 특별히 포착 되 어 던 져 졌 습 니 다.상층 부 에 서 는 이 이상 이 기록 되 어 있 을 뿐 링크 가 닫 히 지 않 는 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
shiro 이상텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.