2016-10-18 11 views
1

私はアンドロイドアプリの開発には初めてです。最近、Ipifyに基づいて公開IPを表示できるアプリケーションを作成しています。これまでのところ、私はすでに:Androidの報告されていない例外IOExceptionエラー

  • 必要なjarファイルをダウンロードし、LIBSのフォルダの中に入れ
  • 私はまた、Gradleの
  • 内のファイルをコンパイルし、私はそれがどのよう

私のクラスに必要なクラスをインポートします

import org.ipify.Ipify; 

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

私は次のメソッドを別のものから呼び出すように書いていますクラス:私は、コードを修正して、次のtryおよびcatchを使用しようとしましたが、それでも同じだ

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

*と、次のtryおよびcatchを使用* ... aroudを試してみてください彼らはすべて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

不受任の理由は何ですか? – 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; 
} 

を修正しているthis.Iいけないために一日を過ごしません」あなたのIDEには、clean projectの助けを借りてください。いくつかのデータがキャッシュされている可能性があります。

他のクラスに問題があります!メソッドgetPublicIp()IOExceptionにスローすると宣言したので、そのクラスはExceptionを受け取ることを恐れており、そのためにそれをキャッチする要求があります。

Javaでは、2種類の例外があります。チェックされ、チェックされていません。チェックされた例外をキャッチする必要があります。

Javaでは、予期しない状況をマークするためにJava例外が使用されます。たとえば、数字以外のStringを数値(NumberFormatException)にパースするか、またはnullの参照(NullPointerException)でメソッドを呼び出します。あなたはいろいろな方法でそれらを捕らえます。

チェックされていないExceptionは、RunTimeExceptionを拡張したものです。通常、ユーザーの入力による予期しない状態をマークするために使用されます。彼らは害を及ぼすべきではなく、ビジネスロジックで解決すべきです。あなたはそれらをキャッチする必要はありませんが、時にはあなたはすべきです。

一方、危険な状況を示すチェックExceptionがあります。たとえば、アプリケーションがファイルを開くことができません。それらの状況が危険であると分かったら、それらを捕らえなければなりません。

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

またはJava以来​​7:

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

チェックして、チェックされた例外に関する情報をありがとう、私の新しい情報thats。私はJSOUPである別のライブラリを使用していましたが、コードを実行するように管理しました。 –

関連する問題