Swift 4.0学习之旅—断言与先决条件

//断言与先决条件
        
        //断言和先决条件是在运行时做的建仓啊,你可以用他们来检查在执行后续代码之前是否一个必要的条件已经被满足了,如果断言或者先决条件中的布尔条件评估的结果为true真,则代码像往常一样继续执行。如果布尔条件评估结果为false假,程序的当前状态是无效的,则代码执行结束,应用程序中止。
        //断言帮助你在开发阶段找到错误和不正确的假设。
        //先决条件帮助你在生产环境中探测到存在的问题
        //断言和先决条件与错误处理不同,不是用来处理可以恢复的的或者可预期的错误。因为断言失败表明了程序正处于一个无效的状态,没有办法去捕获一个失败的断言。
        //使用断言和先决条件不是一个能够避免出现程序出现无效状态的编码方法,然而,如果一个无效状态程序产生了断言和先决条件可以强制检查你的数据和程序状态,使得你的程序可预测的中止(非系统强制,被动的中止)。并帮助使这个问题更容易调试,一旦探测到无效的状态,执行则被中止,防止无效的状态导致的进一步对于系统的伤害,
        //断言和先决条件的不同点是 断言仅在调试环境运行,而先决条件在调试和生产环境中运行,在生产环境中,断言的条件将不会惊醒评估,这个意味着你可以使用很多断言在你的开发阶段,但是这些断言在生产环境中不会产生任何影响。
        let age = -3
        assert(age <= 0, "断言不会触发")
//        assert(age >= 0,"年龄不可能小于0,断言触发")
        if age > 10{
            print("超过10岁")
        }else if age > 0{
            print("超过0岁")
        }else{
//            assertionFailure("年龄不可能小于0") //用于检测 匹配未考虑的判断条件
        }
        
        //当一个条件可能为false时,但是继续执行的代码要求条件必须为true时,需要使用先决条件,也就是在变量或常量给下一句代码使用时,需在下一行代码钱加上 precondition 括号内加上需要的判断语句
        //例如放在switch的default分支里,但是所有的有效值应该被任意一个其他分支处理
        let index = -1
        precondition(index > 0,"下标需大于0")

你可能感兴趣的:(Swift 4.0学习之旅—断言与先决条件)