이상 한 지혜 를 처리 하 다

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 은 특별히 포착 되 어 던 져 졌 습 니 다.상층 부 에 서 는 이 이상 이 기록 되 어 있 을 뿐 링크 가 닫 히 지 않 는 다.
 
 

좋은 웹페이지 즐겨찾기