python 中常见的异常
try…except语句
try: block1 # 表示可能出现异常的代码块 except[ExceptionName[as alias]]: # ExceptionName 表示要捕获的异常的名称 as alias 表示当前的异常的另一个别名 block2 # 执行except后可执行的语句
try…except…else
try: block1 # 表示可能出现异常的代码块 except[ExceptionName[as alias]]: # ExceptionName 表示要捕获的异常的名称 as alias 表示当前的异常的另一个别名 block2 # 执行except后执行的语句 else: # 没有抛出异常时执行 block3
try…except…finally语句
try: block1 # 表示可能出现异常的代码块 except[ExceptionName[as alias]]: # ExceptionName 表示要捕获的异常的名称 as alias 表示当前的异常的另一个别名 block2 # 执行except后执行的语句 finally: # 无论是否抛出异常都会执行 block3
raise语句
raise [ExceptionName[(reason)]] # ExceptionName 表示要捕获的异常的名称
ExceptionName(reason) 中的(reason)可以省略,如果省略在抛出异常时将不会有任何描述信息
练习
模拟分苹果
def division(): '''功能:分苹果''' print("======分苹果啦=======") apples = int(input("请输入苹果的个数:")) # 输入苹果的个数 children = int(input("请输入孩子的个数")) # 输入孩子的个数 result = apples//children # 计算每一个人能分多少个 remain = apples%children # 计算剩余多少个苹果 if apples < children: raise ValueError("苹果太少了不够分") #使用reise语句抛出异常 if remain > 0: print(apples,"苹果",children,"孩子,每一个人分",result,"还剩",remain,"个苹果") else: print(apples,"苹果",children,"个孩子,每人分",result,"还剩",remain,"个苹果") if __name__ == '__main__': try: # 捕获异常 division() # 调用division()函数(分苹果的函数) except ZeroDivisionError: # 处理ZeroDivisionError异常(除数为0引发的错误) print("\n出错了,苹果不能被零个小朋友分") except ValueError as e: # 处理ValueError异常(传入值的错误) print("出错了",e) else: # 没有任何异常时执行 print("分苹果顺利完成") finally: # 无论是否抛出异常都执行 print("进行了一次分苹果")