学完「异常处理」,动手做一做。做完点开参考答案对一对。
写一个函数,收到非正数就抛出错误提示,并在外面捕获。
函数 检查正数(数)
如果 数 <= 0
抛出 "必须是正数"
返回 数
尝试
打印(检查正数(-2))
捕获 错
打印(错)
解析:函数负责发现并抛出问题,调用处用
尝试/捕获决定怎么处理。
写 安全除法(甲, 乙):除数是 0 就抛出,其余情况返回商;调用时捕获错误。
函数 安全除法(甲, 乙)
如果 乙 == 0
抛出 "除数不能是零"
返回 甲 / 乙
尝试
打印(安全除法(8, 0))
捕获 错
打印("算不了:" + 错)
解析:先检查除数是不是 0,再执行除法;错误发生后会直接跳到
捕获。
写一个 安全转数 函数:尝试 整数(文字),失败就返回 -1,然后分别打印 安全转数("100") 和 安全转数("你好")。
函数 安全转数(文字)
尝试
返回 整数(文字)
捕获 错
返回 -1
打印(安全转数("100")) # 100
打印(安全转数("你好")) # -1
解析:
整数(文字)在文字不是数字时会报错。尝试里的代码一旦出错,就跳到捕获,返回 -1(给个默认值)。"100"能转成功,走返回 100;"你好"转不了,走捕获返回-1。这是「出错时给个兜底」的经典写法。
示例/ 目录,每个都能 cnp 运行到示例索引的“输入输出与异常后”选择 07-猜数字、10-读写文件 或 16-安全计算器:给 07 改一条问答,给 10 改文件内容,或给 16 改一条错误提示。
下一课:类入门