2014-11-08 66 views
5

我偶爾得到一個錯誤零星無法讀取文件錯誤 - 文件不存在

***終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,理由是:「在文件無法讀取文件:/// VAR /移動/應用/ D743821C-6F34-4E97-8FBA-D7EAD6738E38 /文檔/ contacts.zip

***第一擲調用堆棧: (0x2ef1ef83 0x39799ccf 0x2eb5f7c3 0x2eb5f2dd 0x39c8181f 0x39c87677 0x2eb5f289 0x2eb9897f 0x172cb9 0x17bac3 0x5b769 0x160d99 0x69f2d 0x698cb 0x1709c7 0x17a9a3 0x39c81833 0x39c88ad7 0x39c88d29 0x39dc3bd3 0x39dc3a98) libC++ abi.dylib:以NSException類型的未捕獲異常終止

程序在行

Info.uploadTask = [self.session uploadTaskWithRequest:request fromFile:url]; 

翻倒當我在設備容器我看到該文件不存在的樣子。

我不明白

  1. 爲什麼在道路檢查存在,如果該文件不存在
  2. 爲什麼程序,即使失敗,雖然它是在一個try catch塊

    NSString *path = file.myPath; 
    if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { 
        @try { 
         NSURL *url = [NSURL fileURLWithPath:path]; 
         Info.uploadTask = [self.session uploadTaskWithRequest:request fromFile:url]; 
        } 
        @catch (NSException *exception) { 
         BLog("error Reading file:%@",path); 
         return; 
        } 
    } else { 
        BLog(@"file not found:%@",path); 
        return; 
    } 
    
  3. 通行證
+1

您是否曾設法爲此找到解決方案?我們正在經歷類似的行爲。 – 2015-09-28 07:45:12

+0

這個問題似乎解決了。 – 2015-10-23 08:34:33

+0

我也遇到同樣的問題,如果有人發現一個修復,請分享 – IdoT 2015-11-26 12:12:21

回答

1

所以我有完全相同的問題 - NSURLSession由於某種原因無法讀取文件。但是,我可以使用您擁有的相同代碼捕獲異常。我爲方便創建了一個類別:

@implementation NSURLSession (DMAdditions) 
- (NSURLSessionUploadTask * _Nullable)crashFreeUploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL { 
    @try { 
    return [self uploadTaskWithRequest:request fromFile:fileURL]; 
    } 
    @catch (NSException *exception) { 
    NSLog(@"We crashed: %@", exception); 
    return nil; 
    } 
} 
@end 
+0

我不能標記這是正確的答案,因爲我不能再現 – 2016-02-02 16:52:35

+0

它很容易使其崩潰,只是給它一個不好的網址。它會因相同的錯誤而崩潰。 – almas 2016-02-02 18:17:39