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 """

 

 

posted @ 2020-06-28 15:52  tzg_雨中人  阅读(376)  评论(0)    收藏  举报