python异常(错误)情况整理
在python中,通过将可能引发错误的代码放在try-except代码块中,依赖于try代码块成功执行的代码都应放到else代码块中
使用try-except代码块提供了两个重要的优点:避免让用户看到traceback;让程序能够跳过错误继续运行后面的代码。
格式:1 # incoding=gbk 2 3 num = int(input("Num: ")) 4 try: 5 answer = 5/num # 可能引发错误的代码行 6 except ZeroDivisionError: # 错误类型 7 print("You can't divide by zero!") # 错误提示 8 else: 9 print(answer)
1.处理 ZeroDivisionError 异常
除数不能为0
1 print(5/0) 2 3 """ 4 Traceback (most recent call last): 5 File "division.py", line 1, in <module> 6 print(5/0) 7 ZeroDivisionError: division by zero 8 """
2.处理NameError异常
变量名错误
1 """ 2 Traceback (most recent call last): 3 File "new.py", line 4, in <module> 4 print(5/num) # 错误代码行 5 NameError: name 'num' is not defined 6 """
变量num没有定义,在使用变量前要先定义变量
3.处理SyntaxError异常
语法有错误
1 """ 2 File "new.py", line 3 3 SyntaxError: Non-UTF-8 code starting with '\xb4' in file new.py on line 3, but n 4 o encoding declared; see http://python.org/dev/peps/pep-0263/ for details 5 """
可尝试在文首添加代码:
# incoding=gbk
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 30-31: truncated \UXXXXXXXX escape
解决办法:在路径前面添加一个“r”即可
4.处理 FileNotFoundError 异常
找不到文件
1 """ 2 Traceback (most recent call last): 3 File "new.py", line 4, in <module> 4 with open(filename) as f_obj: 5 FileNotFoundError: [Errno 2] No such file or directory: 'alice.txt' 6 """
5.处理TypeError异常
类型错误
可使用int()、float()、str()等进行强制类型转换
1 """ 2 Traceback (most recent call last): 3 File "guest_book.py", line 11, in <module> 4 print("The file "+file_name+" has about "+file_words_nums+" words.") 5 TypeError: can only concatenate str (not "int") to str 6 """
只能将字符串和字符串连接,不能将数字和字符串连接 str (file_words_nums)
1 """ 2 Traceback (most recent call last): 3 File "test_name_function.py", line 7, in test_first_last_name 4 formatted_name = get_formatted_name('line','vipper') 5 TypeError: get_formatted_name() missing 1 required positional argument: 'middle' 6 """
缺少一个必不可少的位置实参 'middle'
Traceback (most recent call last): File "num_28.py", line 19, in <module> print("第%d个人%d岁。"%(i, age(i))) File "num_28.py", line 15, in age age = age(n-1) + 2 TypeError: 'int' object is not callable
有变量名(age)与函数名(age)重复了
6.处理AttributeError异常
属性错误
1 """ 2 Traceback (most recent call last): 3 File "guest_book.py", line 15, in <module> 4 file_name.count_words() 5 AttributeError: 'str' object has no attribute 'count_words' 6 """
7.处理IndentationError异常
缩进错误
1 """ 2 File "remember_me.py", line 18 3 username = json.load(file_object) 4 ^ 5 IndentationError: expected an indented block 6 """
8.处理ValueError异常
强制转换时值错误,如int(str),其中str不为整型字符串
1 """ 2 Please input your favorite number: a 3 Traceback (most recent call last): 4 File "10_11.py", line 12, in <module> 5 print(input_favorite_num()) 6 File "10_11.py", line 5, in input_favorite_num 7 int(user_favorite_num) 8 ValueError: invalid literal for int() with base 10: 'a' 9 """
浙公网安备 33010602011771号