2016-10-17 5 views
-4

に運ぶ私はしかし、時折、結果がnullポインタ例外を与えるアドレスのフルテキストファイルから入力されたIPアドレスを受け取り、物理的な場所ヌル点の例外を無視し、

にこれらを変換し、いくつかのコードを書かれています - ちょっと、テキストファイルが100%正しくフォーマットされていないときに入力されることが予想されますが、100万を超えるアドレスがあると、NULLポインタの例外が少し迷惑をかけてプログラムを停止することがあります。例外をキャッチしているだけですか?

 public convert() { 

//   System.out.println("in test"); 
      Locate obj = new Locate(); 
      String file = "Bitcoin_IP.txt"; 

      try (BufferedReader br = new BufferedReader(new FileReader(file))) { 
       String line; 
       while ((line = br.readLine()) != null) { 
//    System.out.println(line); 

        ServerLocation location = obj.getLocation(line); 
        System.out.println(location); 

        try { 
         String filename = "Locations.txt"; 
         try (FileWriter fw = new FileWriter(filename, true)) { 
          fw.write(location + "\n"); 
         } 
        } catch (NullPointerException ioe) { 
         System.err.println("NullPointerException: " + ioe.getMessage()); 
        } 
       } 
      } catch (IOException ex) { 
       Logger.getLogger(Locate.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 
+4

なぜそれが期待されると思いますか?表示されたコードでなぜ 'NullPointerException'を取得するのかわかりません... –

+2

(基本的に、' NullPointerException'をキャッチするのではなく、関連する変数の値が 'null'であるかどうかをチェックする必要があります。それに応じて行動してください。) –

+0

あなたは 'ServerLocation location = obj.getLocation(line); '' try'ブロックの中に? – vikingsteve

答えて

0

あなたは既にコードの一部についてNPEをキャッチしているので、あなたはまだこれらの特定の例外を取得している場合、彼らはここで発信されている必要があります

   try { 
        ServerLocation location = obj.getLocation(line); 
        System.out.println(location); 

        String filename = "Locations.txt"; 
        try (FileWriter fw = new FileWriter(filename, true)) { 
         fw.write(location + "\n"); 
        } 
       } catch (NullPointerException ioe) { 
        System.err.println("NullPointerException: " + ioe.getMessage()); 
       } 

   ServerLocation location = obj.getLocation(line); 

だから、これを試してください

+1

nullpointer例外を捕まえるべきではありません。代わりに、オブジェクトがnullでないかどうかを確認する必要があります。 if(obj!= null) –

+0

'getLocation(line)'がNullPointerExceptionをスローするとどうなりますか? – vikingsteve

+0

自分が所有している図書館からのものであれば、その原因を調べる必要があります。それが外部の図書館であり、事前にチェックを行うことができない場合、それはあなたのコントロールから外れており、あなたはNPEを捕まえる正当な理由があります –

関連する問題