2013-08-24 97 views
1

有時我得到Exception.java.io.FileNotFoundException,文件打開失敗:EROFS(只讀文件系統)。我在我的清單中有WRITE_EXTERNAL_STORAGE權限,偶爾當我有我的服務運行,然後我得到這些例外和少數操作將不會成功,但如果我重新啓動我的設備,那麼它工作正常。 我想抓住「Exception.java.io.FileNotFoundException」異常並以編程方式重新啓動我的設備。我的設備已根植,因此我以編程方式執行「su -c reboot」。Android文件打開失敗:EROFS

我需要知道如何捕捉「文件打開失敗:EROFS」異常並觸發重啓?

+0

該異常並不意味着有沒有文件可以打開?無論如何,封裝會拋出異常的代碼部分呢?嘗試{你的代碼} catch(FileNotFoundException e){reboot here?}應該做的工作。 – JosephChilberry

回答

0

將解決你的問題是:

try{ 
     do whatever 
    }catch(FileNotFoundException ex){ 
     if("EROFS (Read- only file System)".equals(ex.getMessage())){ 
      call code for reboot 
     } 
    } 

,可隨時更換的錯誤信息,甚至跳過

編輯: - 基於註釋

try{ 
     do whatever 
    }catch(IOException ex){ 
     if((ex instanceof FileNotFoundException) && "EROFS (Read- only file System)".equals(ex.getMessage())){ 
      call code for reboot 
     } 
    } 
+0

上面的代碼適用於我,但我需要在我的代碼中的許多地方捕獲該異常。如果我想使用「擴展FileNotFoundException類」,那麼我怎麼能捕捉到異常 – user1810931

+1

比趕上他的父IOException http:// docs .oracle.com/javase/7/docs/api/java/io/FileNotFoundException.html並按upvote,如果我幫忙了,謝謝 – 2013-08-24 14:54:38

+0

這是這樣嗎?

 import java.io.IOException; public class FileNotFoundException extends IOException { \t public FileNotFoundException() { \t \t super(); \t \t If ("EROFS (Read- only file System)".equalsIgnoreCase(getMessage())) { \t \t \t // reboot \t \t } \t } \t Override \t public String getMessage() { \t \t return super.getMessage(); \t } \t }
user1810931

相關問題