断言assert用做处理的开发期的错误,它是程序员的调试工具,在release代码的时候,assert是会移除的,所以,assert用来检查 程序员的错误。如果你的程序模块化做得好,用assert可以保证所有错误不出模块,遇到错误就被拦截。
实际开发中,我们通常将Assert与异常混淆, 不知道什么时候使用Assert,什么时候使用异常处理。或者不用Assert,将一切情况都归为异常。这样一来,就掩盖了问题,当问题发生的时候,很难进行定位,而这些问题本该是在开发的时候就解决掉的。同时,也增加了开销(在c#中,debug.Assert()编译成release版本时,不会产生任何代码,而try/catch在debug/release版本中都是有代码产生,运行时需要开销)。
断言assert用在那些你知道绝对不会发生的事情上,但是因为人总是会犯错误,保不准你写出来的东西跟你想的不一样。所以assert用来捕捉的是程序员自己的错误。同理,exception捕捉的是用户或者环境的错误。
关于断言的使用:
;
NSAssert(fData.length != 1, @"提示: (此时data length == 1)")