参考资料:https://www.runoob.com/python3/python3-errors-execptions.html
异常 介绍 和 处理
1、异常介绍
运行期检测到的错误被称为异常。
如下都是异常:
>>> 10 * (1/0) # 0 不能作为除数,触发异常 Traceback (most recent call last): File "<stdin>", line 1, in ? ZeroDivisionError: division by zero >>> 4 + spam*3 # spam 未定义,触发异常 Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'spam' is not defined >>> '2' + 2 # int 不能与 str 相加,触发异常 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate str (not "int") to str
2、异常处理: try/except
a、异常捕捉可以使用 try/except 语句。
b、try 的代码段一般是只针对有可能会报错的代码,不需要 try 太多 代码 ;
while True: try: x = int(input("请输入一个数字: ")) break except ValueError: print("您输入的不是数字,请再次尝试输入!")
执行结果如下:
D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day10\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day10/test_01/test_01.py 请输入一个数字: ada 您输入的不是数字,请再次尝试输入! 请输入一个数字: 1 Process finished with exit code 0
3、raise 抛出异常
在 excpet 里面添加 raise, 抛出异常 ;
实列代码如下:
while True: try: x = int(input("请输入一个数字: ")) break except ValueError as ve: print("您输入的不是数字,请再次尝试输入!") raise # 抛出异常
执行结果如下:
请输入一个数字: aaa 您输入的不是数字,请再次尝试输入! Traceback (most recent call last): File "D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day10/test_01/test_01.py", line 40, in <module> x = int(input("请输入一个数字: ")) ValueError: invalid literal for int() with base 10: 'aaa' Process finished with exit code 1