python异常处理调试
Silva72 人气:0前言:
异常是错误出现时,可以在正常的控制流程之外采取的行为。
一、try-except
try: age = int(input("请输入年龄:")) if age >= 18: print("你已成年") else: print("你未成年") except ValueError as error: print("输入不合法") print(error) print("程序结束")
请输入年龄:abc
输入不合法
invalid literal for int() with base 10: 'abc'
程序结束
二、try-except-else
若没异常没执行except,则执行else里的语句
try: age = int(input("请输入年龄:")) except ValueError as error: print("输入不合法") else: if age >= 18: print("你已成年") else: print("你未成年") print("程序结束")
请输入年龄:a
输入不合法
程序结束
三、try-except-finally
finally 无论是否发生异常,都得执行,如关闭文件
try: file = open("text.txt", "w") # 打开文件 s = "hello world" file.write(s) # 操作文件 except: print("操作异常") finally: # 无论是否发生异常,都得执行 file.close() # 关闭文件 print("关闭文件")
四、处理多个异常
方法一:
try: age = int(input("请输入年龄:")) x = 10 / age except ValueError: print("请输入整数") except ZeroDivisionError: print("年龄不能为0") else: print(f"age is {age}") print(f"x is {x}")
方法二:
try: age = int(input("请输入年龄:")) x = 10 / age except (ValueError, ZeroDivisionError): print("请输入合理的年龄") else: print(f"age is {age}") print(f"x is {x}")
五、raise主动抛出异常
try语句中,遇到了异常才会抛出异常
raise是为了主动抛出异常
def is_adult(age): if age < 18: raise ValueError("你还未成年") try: age = int(input("请输入年龄:")) is_adult(age) # 已经抛出<18的异常,except不会执行。如果是其他abc异常,仍会执行except except ValueError as e: print(e) print("continue")
请输入年龄:1
你还未成年
continue
加载全部内容