# Python 常见异常类型 https://www.runoob.com/python/python-exceptions.html
def division(): """功能: 分苹果""" print("\n", "="*10, "分苹果", "="*10) apple = int(input("请输入苹果的个数:")) children = int(input("请输入来了几位小朋友:")) result = apple//children remain = apple - result * children if remain > 0: print(apple, "个苹果,平均分给", children, "位小朋友,每人分", result, "个,剩下", remain, "个。") else: print(apple, "个苹果,平均分给", children, "位小朋友,每人分", result, "个。")
# try...except 语句
if __name__ == '__main__': try: division() except ZeroDivisionError: print("\n出错了 ~_~--苹果不能被0位小朋友分!") except ValueError as e: print("输入错误:", e)
如果需要同时处理多个异常,也可以如下写法:
在except语句后面使用一对小括号将可能出现的异常名称括起来,多个异常名称之间使用逗号分隔
如果想要显示具体的出错原因,那么再加上as指定一个别名
# except(ValueError,ZeroDivisionError) 合并错误
try: division() except (ValueError,ZeroDivisionError) as e: print("出错了,原因是:",e)
# except[ExceptionName [as alias]] 别名
try: block1 except[ExceptionName [as alias]]: block2
block1:表示可能出现错误的代码块
ExceptionName [as alias]:可选参数,用于指定要捕获的异常。
其中,ExceptionName表示要捕获的异常名称,如果在其右侧加上as alias,则表示为当前的异常指定一个别名,通过该别名,可以记录异常的具体内容
block2:表示进行异常处理的代码块。在这里可以输出固定的提示信息,也可以通过别名输出异常的具体内容
# try…except…else语句 指定当try语句块中没有发现异常时要执行的语句块
if __name__ == '__main__': try: division() except ZeroDivisionError: print("\n出错了 ~_~--苹果不能被0位小朋友分!") except ValueError as e: print("输入错误:", e) else: print("分苹果顺利完成")
# try…except…finally语句
完整的异常处理语句应该包含finally代码块,通常情况下,无论程序中有无异常产生,finally代码块中的代码都会被执行。
try: block1 except[ExceptionName [as alias]]: block2 finaly: block3
如果程序中有一些在任何情形中都必须执行的代码,那么可以将它们放在finally子句的代码块中
# 综合语句
if __name__ == '__main__': try: division() except ZeroDivisionError: print("\n出错了 ~_~--苹果不能被0位小朋友分!") except ValueError as e: print("输入错误:", e) else: print("分苹果顺利完成") finally: print("进行了一次分苹果操作")