2010-11-08 103 views
0

嘿,任何人。我如何處理TBXML的錯誤?我的意思是,如果找不到該文件或其他內容。事實上,當我關閉文件所在的服務器時,我的應用程序崩潰。TBXML - 錯誤處理

那麼,我該如何處理?

- (void)viewDidLoad { 

    TBXML * tbxml = [[TBXML tbxmlWithURL:[NSURL URLWithString:@"http://localhost/dev/mcomm/produto.xml"]] retain]; 
    TBXMLElement * rootXMLElement = tbxml.rootXMLElement; 



} 

謝謝!

回答

2

如果你實例TBXML你可以嘗試在@try/@catch塊包裝它錯誤的從線來:

TBXML *tbxml = nil; 
@try { 
    tbxml = [[TBXML tbxmlWithURL:[NSURL URLWithString:@"http://localhost/dev/mcomm/produto.xml"]] retain];; 
} 
@catch (NSException *exception) { 
    NSLog(@"Caught %@: %@", [exception name], [exception reason]); 
} 

另外,使用NSURLConnection的單獨下載的XML數據,並使用NSURLConnection的的委託方法處理錯誤情況。成功時,將結果數據傳遞給構造函數,如tbxmlWithXMLData:

編輯:你已經評論說,導致問題的路線是:

TBXMLElement * xmlElement = aParentXMLElement->firstChild; 

你得到的錯誤是因爲你想取消引用空指針(aParentXMLElement是零,並呼籲->someMethod在它上面解除引用)。所以你需要的是在你試圖解引用它之前有一個guard子句來檢查aParentXMLElement是否爲非null。像這樣的事情:

if (aParentXMLElement != nil) { 
    TBXMLElement * xmlElement = aParentXMLElement->firstChild; 
} else { 
    NSLog(@"Can't proceed: aParentXMLElement is nil"); 
} 
+0

嘿,我試了一試,但沒有運氣。和控制檯不提供任何東西。 – 2010-11-08 14:48:46

+0

這就是導致錯誤的那條線?而不是,例如,當它沒有一個時,在'tbxml'上調用'.rootXMLElement'? – 2010-11-08 15:12:55

+0

我正在調試,並且調試器顯示給我這一行:TBXMLElement * xmlElement = aParentXMLElement-> firstChild; – 2010-11-08 15:30:31