2014-03-31 51 views
0

如何處理filenotfoundexception。我的應用程序在某些設備上崩潰,但在其他設備上運行良有沒有嘗試抓住處理文件沒有找到exeption或我怎麼處理這個錯誤。java.io.FileNotFoundException:/storage/emulated/0/user_image_name.jpg打開失敗:ENOENT(沒有這樣的文件或目錄)崩潰應用程序

03-31 12:25:49.477: E/MediaPlayer(28356): error: /storage/emulated/0/user_image_name.jpg: open failed: ENOENT (No such file or directory) 
    03-31 12:25:49.477: E/MediaPlayer(28356): java.io.FileNotFoundException: /storage/emulated/0/user_image_name.jpg: open failed: ENOENT (No such file or directory) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at libcore.io.IoBridge.open(IoBridge.java:416) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at java.io.FileInputStream.<init>(FileInputStream.java:78) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at name.secondname.app.utils.HttpRequest.doFileUpload(HttpRequest.java:2949) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at name.secondname.app.moncompte.Editer$uploadImageLoadingTask.doInBackground(Editer.java:1099) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at name.secondname.app.moncompte.Editer$uploadImageLoadingTask.doInBackground(Editer.java:1) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at java.lang.Thread.run(Thread.java:856) 
    03-31 12:25:49.477: E/MediaPlayer(28356): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at libcore.io.Posix.open(Native Method) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) 
    03-31 12:25:49.477: E/MediaPlayer(28356): at libcore.io.IoBridge.open(IoBridge.java:400) 
    03-31 12:25:49.477: E/MediaPlayer(28356): ... 10 more 
    03-31 12:25:49.497: E/AndroidRuntime(28356): FATAL EXCEPTION: AsyncTask #5 
    03-31 12:25:49.497: E/AndroidRuntime(28356): java.lang.RuntimeException: An error occured while executing doInBackground() 
    03-31 12:25:49.497: E/AndroidRuntime(28356): at android.os.AsyncTask$3.done(AsyncTask.java:299) 
    03-31 12:25:49.497: E/AndroidRuntime(28356): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
    03-31 12:25:49.497: E/AndroidRuntime(28356): at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
    03-31 12:25:49.497: E/AndroidRuntime(28356): at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
    03-31 12:25:49.497: E/AndroidRuntime(28356): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
    03-31 12:25:49.497: E/AndroidRuntime(28356): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
    03-31 12:25:49.497: E/AndroidRuntime(28356): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
    03-31 12:25:49.497: E/AndroidRuntime(28356): at java.lang.Thread.run(Thread.java:856) 
    03-31 12:25:49.497: E/AndroidRuntime(28356): Caused by: java.lang.NullPointerException 
    03-31 12:25:49.497: E/AndroidRuntime(28356): at name.secondname.app.utils.HttpRequest.doFileUpload(HttpRequest.java:3006) 
    03-31 12:25:49.497: E/AndroidRuntime(28356): at name.secondname.app.moncompte.Editer$uploadImageLoadingTask.doInBackground(Editer.java:1099) 
    03-31 12:25:49.497: E/AndroidRuntime(28356): at name.secondname.app.moncompte.Editer$uploadImageLoadingTask.doInBackground(Editer.java:1) 
    03-31 12:25:49.497: E/AndroidRuntime(28356): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
    03-31 12:25:49.497: E/AndroidRuntime(28356): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
    03-31 12:25:49.497: E/AndroidRuntime(28356): ... 4 more 
+0

你是**假設**文件路徑是什麼,或者你在運行時使用適當的API發現它嗎?無論如何,您的程序必須考慮到文件(甚至整個外部存儲裝載)可能不存在。因此,首先解決任何錯誤,例如假設某個設備上的路徑是什麼,或者程序邏輯錯誤導致您認爲該文件尚未創建時應該在那裏。但是在那之後,你可能應該在try/catch塊中處理Exception,因爲文件/文件系統可能會在你身上消失。 –

回答

1

是的,在文件打開邏輯周圍放置一個try-catch塊,並在發現異常時處理異常。

try { 
    // File related operations 
} catch (Exception e) { 
    // Handle the exception here 
} 
相關問題