2016-04-14 21 views
0

Android geliştirmeye yeni başladım ve birkaç gün önce doInBackground() yöntemiyle çözemediğim bir hata alıyorum. teşekkürler java.io.IO.EXCEPTIONAndroid doInBackground hatası

Eğer çözüm varsa: My error

işlenmeyen istisna

e2 = e11; 
createInsecureRfcommSocketToServiceRecord = null; 
this.sender = e2.getMessage(); 
createInsecureRfcommSocketToServiceRecord.close(); 

de, benim kod sonundadır peşin! Kodum:

protected Object doInBackground(Object[] objArr) { 
    BluetoothSocket createInsecureRfcommSocketToServiceRecord; 
    IOException e; 
    Throwable th; 
    IButton a; 
    Boolean valueOf; 
    boolean z = true; 
    this.jobType = (JobType) objArr[0]; 
    this.sender = (MainActivity) objArr[1]; 
    this.device = (BluetoothDevice) objArr[2]; 
    try { 
     createInsecureRfcommSocketToServiceRecord = 
       device.createInsecureRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")); 
     try { 
      createInsecureRfcommSocketToServiceRecord.connect(); 
     } catch (IOException e2) { 
      Log.e("Bluetooth", e2.getMessage()); 
      Log.e("Bluetooth", "trying fallback"); 
      try { 
       createInsecureRfcommSocketToServiceRecord = (BluetoothSocket) 
         this.device.getClass().getMethod("createInsecureRfcommSocket", new Class[]{Integer.TYPE}).invoke(this.device, new Object[]{Integer.valueOf(1)}); 
      } catch (Exception e3) { 
       Log.e("Bluetooth", e3.getMessage()); 
      } 
      try { 
       createInsecureRfcommSocketToServiceRecord.connect(); 
      } catch (IOException e4) { 
       e2 = e4; 
       try { 
        this.error = e2.getMessage(); 
        try { 
         createInsecureRfcommSocketToServiceRecord.close(); 
        } catch (IOException e5) { 
        } 
        return null; 
       } catch (Throwable th2) { 
        th = th2; 
        try { 
         createInsecureRfcommSocketToServiceRecord.close(); 
        } catch (IOException e6) { 
        } 
        throw th; 
       } 
      } 
     } 
     if (this.jobType == JobType.read) { 
      a = readDevice(createInsecureRfcommSocketToServiceRecord); 
      try { 
       createInsecureRfcommSocketToServiceRecord.close(); 
       return a; 
      } catch (IOException e7) { 
       return a; 
      } 
     } else 

     if (this.jobType == JobType.stopMission) { 
      a = (IButton) objArr[3]; 
      if (!(stopMission(createInsecureRfcommSocketToServiceRecord) && 
        writeDevice(createInsecureRfcommSocketToServiceRecord, a))) { 
       z = false; 
      } 
      valueOf = Boolean.valueOf(z); 
      try { 
       createInsecureRfcommSocketToServiceRecord.close(); 
       return valueOf; 
      } catch (IOException e8) { 
       return valueOf; 
      } 
     } else 

     if (this.jobType == JobType.startMission) { 
      boolean z2 = writeDevice(createInsecureRfcommSocketToServiceRecord, (IButton) objArr[3]) && 
        startMission(createInsecureRfcommSocketToServiceRecord); 
      valueOf = Boolean.valueOf(z2); 
      try { 
       createInsecureRfcommSocketToServiceRecord.close(); 
       return valueOf; 
      } catch (IOException e9) { 
       return valueOf; 
      } 
     } else { 
      try { 
       createInsecureRfcommSocketToServiceRecord.close(); 
      } catch (IOException e10) { 
      } 
      return null; 
     } 
    } catch (IOException e11) { 
     e2 = e11; 
     createInsecureRfcommSocketToServiceRecord = null; 
     this.sender = e2.getMessage(); 
     createInsecureRfcommSocketToServiceRecord.close(); 
     return null; 
    } catch (Throwable th3) { 
     th = th3; 
     createInsecureRfcommSocketToServiceRecord = null; 
     createInsecureRfcommSocketToServiceRecord.close(); 
     throw th; 
    } 
    return null; 
} 
+1

Sen temizlenmesi için 'finally' kullanmayı düşünmelisiniz değiştirin. – tynn

cevap

0

close() ayrıca ele gereken bir IOException istisna atar. Ek olarak, temizlemek için finally bloğunu kullanmalı ve NullPointerExeption s'yi provoke etmemeye dikkat etmeli ve kapatmadan önce değişken null'a ayarlanmalıdır.

Benim bu benim kodunu değiştirmek olduğum

try { 
    .... 
} catch (Exception e) { 
    .... 
} finally { 
    try { 
     createInsecureRfcommSocketToServiceRecord.close(); 
     createInsecureRfcommSocketToServiceRecord = null; 
    } catch (IOException e) { 
    } 
} 
+0

Tynn, May çözümünüz için teşekkürler! Mükemmel çalışıyor! – mowglypro

0

gibi kodunuzu artırabilirsiniz ama bir java.lang.NullPointerException değilim ... Fonction doInBackground() çok zordur ... Yardımlarınız için teşekkürler!

Kodum

protected Object doInBackground(Object[] objArr) { 
    BluetoothSocket createInsecureRfcommSocketToServiceRecord = null; 
    IOException e; 
    Throwable th; 
    IButton a; 
    Boolean valueOf; 
    boolean z = true; 
    this.jobType = (JobType) objArr[0]; 
    this.sender = (MainActivity) objArr[1]; 
    this.device = (BluetoothDevice) objArr[2]; 
    try { 
     createInsecureRfcommSocketToServiceRecord = 
       device.createInsecureRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")); 
     try { 
      createInsecureRfcommSocketToServiceRecord.connect(); 
     } catch (IOException e2) { 
      Log.e("Bluetooth", e2.getMessage()); 
      Log.e("Bluetooth", "trying fallback"); 
      try { 
       createInsecureRfcommSocketToServiceRecord = (BluetoothSocket) 
         this.device.getClass().getMethod("createInsecureRfcommSocket", new Class[]{Integer.TYPE}).invoke(this.device, new Object[]{Integer.valueOf(1)}); 
      } catch (Exception e3) { 
       Log.e("Bluetooth", e3.getMessage()); 
      } 
      try { 
       createInsecureRfcommSocketToServiceRecord.connect(); 
      } catch (IOException e4) { 
       e2 = e4; 
       try { 
        this.error = e2.getMessage(); 
        try { 
         createInsecureRfcommSocketToServiceRecord.close(); 
        } catch (IOException e5) { 
        } 
        return null; 
       } catch (Throwable th2) { 
        th = th2; 
        try { 
         createInsecureRfcommSocketToServiceRecord.close(); 
        } catch (IOException e6) { 
        } 
        throw th; 
       } 
      } 
     } 
     if (this.jobType == JobType.read) { 
      a = readDevice(createInsecureRfcommSocketToServiceRecord); 
      try { 
       createInsecureRfcommSocketToServiceRecord.close(); 
       return a; 
      } catch (IOException e7) { 
       return a; 
      } 
     } else if (this.jobType == JobType.stopMission) { 
      a = (IButton) objArr[3]; 
      if (!(stopMission(createInsecureRfcommSocketToServiceRecord) && 
        writeDevice(createInsecureRfcommSocketToServiceRecord, a))) { 
       z = false; 
      } 
      valueOf = Boolean.valueOf(z); 
      try { 
       createInsecureRfcommSocketToServiceRecord.close(); 
       return valueOf; 
      } catch (IOException e8) { 
       return valueOf; 
      } 
     } else if (this.jobType == JobType.startMission) { 
      boolean z2 = writeDevice(createInsecureRfcommSocketToServiceRecord, (IButton) objArr[3]) && 
        startMission(createInsecureRfcommSocketToServiceRecord); 
      valueOf = Boolean.valueOf(z2); 
      try { 
       createInsecureRfcommSocketToServiceRecord.close(); 
       return valueOf; 
      } catch (IOException e9) { 
       return valueOf; 
      } 
     } else { 
      try { 
       createInsecureRfcommSocketToServiceRecord.close(); 
      } catch (IOException e10) { 
      } 
      return null; 
     } 
    } catch (IOException e11) { 
     try { 
      createInsecureRfcommSocketToServiceRecord.close(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 
     createInsecureRfcommSocketToServiceRecord = null; 
     return null; 
    } catch (Throwable th3) { 
     th = th3; 
    } finally { 
     try { 
      createInsecureRfcommSocketToServiceRecord.close(); 
      createInsecureRfcommSocketToServiceRecord = null; 
     } catch (IOException e2) { 
     } 
    } 
    return null; 
} 
+0

Bu sizin çalışma örneğiniz mi yoksa başka bir soru mu? Nasıl anlayacağımı bilmiyorum. – tynn

+0

Bu benim çalışma örneğim, ancak çalışma yok ... Ben bir java.lang.NullPointerException hatası. – mowglypro

+0

O zaman yeni bir soru sormayı düşünmelisiniz. Ya da hatayı kendiniz için daha iyi arayın. 'NullPointerExceptions' bulmak kolay. Ve en azından orada logcat'ten bir stacktrace gereklidir. – tynn