2016-10-18 4 views
1

나는 안드로이드 애플 리케이션 개발을 처음 사용했습니다. 최근에 Ipify을 기반으로 공개 IP를 표시 할 수있는 응용 프로그램을 작성했습니다. 지금까지 이미 내가 :안드로이드보고 예외 IOException 오류

  • 이 필요한 jar 파일을 다운로드 넣어 내부 libs와 나는 또한 내가 내 클래스에 클래스를 요구하여 가져 오는
  • 그런 Gradle을 내 파일을 컴파일
  • 폴더

방법

import org.ipify.Ipify; 

public class HelloIP { 
    public static void main(String[] args) throws IOException { 
     System.out.println(Ipify.getPublicIp()); 
    } 
} 

나는 다음과 같은 방법으로 다른 사람으로부터 호출 할 수있다. 클래스 :

Error:(52, 43) error: unreported exception IOException; must be caught or declared to be thrown

나는 다음과 같은 시도 및 캐치 코드를 수정하고 사용하려고했지만 여전히 같은있어 :

public static String getPublicIp() throws IOException{ 
    String ip = Ipify.getPublicIp(); 
    return ip; 
} 

또 다른 클래스 그러나

//Get wifi 
getWifiName wifiInfo = new getWifiName(); 
String myIP = wifiInfo.getPublicIp(); 

, 나는 점점 계속 오류.

public static String getPublicIp() throws IOException{ 
    String myip = Ipify.getPublicIp(); 
    try{ 
     return myip; 
    } 
    catch (IOException e){ 
     System.out.println("General I/O exception: " + e.getMessage()); 
     e.printStackTrace(); 
    } 
} 

임 캐치 던져 예외 너무 좋은, 그리고 이미 생각이 더 이상 didn를 경우이 error..TT

+0

* 다음과 같은 시도 및 캐치를 사용 * ... 아루 시도 그들은 모두 Exception 확장하는 것을

try{ //some code } catch (NumberFormatException e1) { e.printStackTrace() //very important - handles the Exception but prints the information! } catch (NullPointerException e2) { e.printStackTrace(); } 

또는 사실을 이용하여, 보통의'return' statment ... 매혹적인 것 – Selvin

+0

unaccept의 이유는 무엇입니까? – xenteros

답변

1
public static String getPublicIp() { 
    try{ 
     return Ipify.getPublicIp(); 
    }catch (IOException e){ 
     System.out.println("General I/O exception: " + e.getMessage()); 
     e.printStackTrace(); 
    } 
    return null; 
} 

를 해결하기 위해 한 이걸 해달라고을 위해 하루 종일 지출하지 ' 귀하의 IDE에 clean project 도와주세요. 일부 데이터가 캐시되어있을 수 있으며 이유가있을 수 있습니다.

다른 클래스에 문제가 있습니다. getPublicIp() 메소드를 IOException을 던지도록 선언 했으므로 클래스는 Exception을 수신하는 것을 두려워하고이를 잡으려고 요청합니다.

자바에는 두 가지 유형의 예외가 있습니다. 선택 및 선택 취소. 확인 된 예외를 포착해야합니다.

Java 예외는 예기치 않은 상황을 표시하는 데 사용됩니다. 예를 들어 숫자가 아닌 String을 숫자 (NumberFormatException)로 파싱하거나 null 참조 (NullPointerException)로 메소드를 호출하는 경우를 예로들 수 있습니다. 당신은 여러 가지 방법으로 그것들을 잡을 수 있습니다.

선택 해제 된 ExceptionRunTimeException을 확장 한 것입니다. 사용자 입력에 의한 예상치 못한 상태를 표시하는 데 사용됩니다. 그들은 해를 입히지 않아야하며 비즈니스 논리로 해결되어야합니다. 당신은 그들을 붙잡을 필요가 없지만 때로는해야합니다.

반면에 위험한 상황을 나타내는 Checked Exception이 있습니다. 예를 들어, 응용 프로그램이 파일을 열 수 없습니다. 그러한 상황이 위험 해지면 반드시 잡아야합니다.

try { 
    //somecode 
} catch (Exception e) { 
    e.printStackTrace; 
}; 

또는 Java 이후 7 :

try { 
    //somecode 
} catch (NullPointerException | NumberFormatException e) { 
    e.printStackTrace; 
}; 
+0

선택 취소하고 확인한 예외에 관한 정보를 보내 주셔서 감사합니다. 저에게 새로운 정보가 있습니다. 나는 JSOUP 인 다른 라이브러리를 사용하여 코드를 실행하도록 만들었습니다. –