我如何处理Objective-C中的异常?编码时我得NSInvalidArgumentException
;使用断点,我可以找出异常发生的位置。我试过这样的事情:
@try{
//My code
}
@catch(id e){
}
但它没有用。
答案 0 :(得分:3)
在Cocoa中,您应该将异常视为具有额外信息的崩溃(极少数例外< - 哈!)。
您不希望处理NSInvalidArgumentException异常。您想了解它为什么会发生并更改您的代码,以免它发生。
答案 1 :(得分:3)
转到XCode中的运行菜单,选择停止Objective-C例外。现在,您的代码将停在实际抛出异常的位置,这样您就可以确切地看到触发它的行。
答案 2 :(得分:1)
您应该始终努力编写不会产生异常的代码。也就是说,您可以在iOS上处理异常。阅读Matt Gallagher撰写的这篇博客: http://cocoawithlove.com/2010/05/handling-unhandled-exceptions-and.html
答案 3 :(得分:1)
要在objective-c中捕获异常,您需要执行以下操作:
@try
{
//Your code
}
@catch(NSException* e) // or subclass of NSException
{
}
然而您不想捕获NSInvalidArgumentException
,因为它表示代码中存在错误。正如Ken所说,它实际上是一次受控制的崩溃。此异常的最常见原因是尝试将nil
插入到竞争中,例如NSMutableArray
或NSMutableDictionary
。如果这是问题所在,您可以通过在调试器中运行代码并启用“Stop on Objective-C exception”来轻松找到它。