2011-11-10 2 views
1

다음 코드는 try 블록에 다음과 같이 작성했습니다.try 블록에서 catch로 이동해야 함

try { 
    if (server1IPAddress != "") { 
    if (InetAddress.getByName(server1IPAddress).isReachable(1000) == false) { 
     } 
      InsertUploadedTrancasctionDetails(server1IPAddress, deviceId, 
               XMLTransactionData); 
    } 
} catch (Exception exception) { 
    if ((server1IPAddress != server2IPAddress) 
     && (server2IPAddress != "")) { 
      InsertUploadedTrancasctionDetails(server2IPAddress, deviceId, 
               XMLTransactionData); 
} 

우리는 내가 도달 IP 주소가 잘못된 경우 condtion 블록의 예를 잡을 경우 try 블록에서 이동해야하는 IP 주소에 도달 할 수없는 경우.

if (InetAddress.getByName(server1IPAddress).isReachable(1000) == false) { 
} 

if 블록에서 예외를 만들 수 없습니다.

예외를 만들지 않거나 if 블록에서 예외를 만들지 않고도 If 블록에서 catch 블록으로 이동할 수있는 방법이 있습니까?

아무쪼록 부탁드립니다.

+0

if 문 내에서 문제를 처리하지 않는 이유는 무엇입니까? – DeeV

답변

2

도달 할 수없는 조건의 코드가 예외 블록의 코드와 동일한 경우 예외를 throw하거나 현재 catch 코드를 리팩터링하여 두 위치에서 호출해야합니다. (또는 코드 만 반복하면됩니다.) 문제가 무엇인지 잘 모르겠습니다.

FWIW는 false에 대해 명시 적으로 확인은 일반적으로 눈살을 찌푸리게한다 - 대신 조건 부정 : 그것을 로그인하지 않은 경우 당신이 있다면하지만, 안티 패턴은,

if (!InetAddress.getByName(server1IPAddress).isReachable(1000)) { 
    // Call refactored catch-handling code, or throw exception. 
} 

Exception 잡기, 특히을 포장하거나 다시 던지면 나쁘지 않습니다.

관련 문제