gag*_*wal 7 objective-c try-catch
为什么以下代码编译没有任何错误?
- (NSArray *) getSomeObjects
{
@try
{
NSArray * arrayToReturn = [NSArray array];
// Perform some oprations on arrayToReturn
return arrayToReturn;
}
@catch (NSException * exception)
{
// Uh Oh!!! I got an exception.
}
// See I am not returning anything from here
// and code still compiles fine without any
// compiler error.
}
Run Code Online (Sandbox Code Playgroud)
在任何异常中,我需要在执行@catch后返回一个空的NSArray.
Xcode中是否有任何编译器标志警告这些丢失的返回语句为错误?
对于编译器来说,正常执行时总会到达块return中的语句。@try它不会认为“哦,这一行可能有异常,因此return永远不会到达下一行的语句”。否则,需要对所有具有返回值的方法发出警告:)
try/catch 块不会改变这一点。
至少,我是这么理解的。我欢迎任何人纠正我/对此进行扩展/更好地解释它。
编辑以解决此问题:
对于任何异常,我需要在执行 @catch 后返回一个空的 NSArray。
如果出现异常,您可以在块中添加另一条return语句。@catch
有趣的是,您不想为此目的return在块中放置另一个块,因为这将覆盖/取代/替换块中的块,即使正常到达块中的块也是如此。@finallyreturn@try@try
| 归档时间: |
|
| 查看次数: |
251 次 |
| 最近记录: |