try里面是执行代码,其中的代码"可能"产生异常.
catch是对产生异常后的处理代码,可以抛出异常,也可以显示异常,也可以弹出某中提示,总之catch里是任何代码都行,如果你知道这钟异常产生的原因,可以打印此原因,也可以对此原因进行相应的处理,同时可以为多个catch,每个catch(异常类型)  用多个catch来捕获多种异常,也可以用所有异常的父类来捕获(这样就不用写多个catchl了).  
假如try中产生了异常,那么try从产生异常开始到try结束的这段代码将不会执行,转而去执行catch.
finally是try执行完后执行(没发生异常)或者在catch后执行(发生了异常),也就是说finally无论怎么样,都会执行.
3个连起来就像平时口语中的  "(try)假如^^^^^^,(catch)就^^^^^^^^^,(finally)最后^^^^^^^^^^



try 
{

 //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 
} 
catch 
{

 //除非try里面执行代码发生了异常,否则这里的代码不会执行 
}

 finally 
{ 


//不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally 
}



- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar

{

// if a valid search was entered but the user wanted to cancel, bring back the main list content

[tableData removeAllObjects];

[tableData addObjectsFromArray:dataSource];

@try{

[myTableView reloadData];

}

@catch(NSException *e){

             NSLog( [e reason]);
            return NO;

}

[sBar resignFirstResponder];

sBar.text = @”";

}