1. 常见的内置异常类
1.1 Exception
1 try: 2 # 一些代码 3 except SpecificException: 4 # 处理特定的异常类型 5 except AnotherException: 6 # 处理另一种异常类型 7 except Exception as e: 8 # 捕获其他未处理的异常,并进行适当处理 9 print(f"捕获到异常:{str(e)}")
当无法再精确确定异常类,就使用Excepion兜底。
1.2 AttributeError
1 ''' 2 AttributeError是Python中的一个内置异常类, 3 它表示访问对象属性或方法时发生了错误。当你尝试访问一个不存在的属性或方法时,就会引发AttributeError异常。 4 ''' 5 6 7 # 1. 对象没有某个属性:当你尝试访问一个对象上不存在的属性时,会引发AttributeError异常。 8 class MyClass: 9 pass 10 11 12 obj = MyClass() 13 # AttributeError: 'MyClass' object has no attribute 'attribute' 14 print(obj.attribute) # 这里将会引发AttributeError异常 15 16 # 2. 模块或包没有某个属性:当你尝试从模块或包中导入一个不存在的属性时,会引发AttributeError异常。 17 import math 18 19 # AttributeError: module 'math' has no attribute 'unknown_func' 20 print(math.unknown_func) # 这里将会引发AttributeError异常 21 22 # 4. 通过try-except捕获并处理异常 23 try: 24 obj = MyClass() 25 print(obj.attribute) 26 except AttributeError: 27 print("对象没有'attribute'属性")
1.3 FileNotFoundError
1 ''' 2 FileNotFoundError是Python中的一个内置异常类,它表示在文件操作中发生了文件未找到的错误。 3 当你尝试打开或操作一个不存在的文件时,就会引发FileNotFoundError异常。 4 5 需要注意的是,当涉及文件操作时,还可能出现其他类型的异常,例如权限错误(PermissionError)或IO错误(IOError)。 6 因此,在处理文件操作时,最好使用多个except块来处理不同类型的异常。 7 ''' 8 9 # 1. 文件不存在:当你尝试打开一个不存在的文件时,会引发FileNotFoundError异常。 10 ''' 11 Traceback (most recent call last): 12 File "F:\异常04-常见内置异常类FileNotFoundError.py", line 7, in <module> 13 with open(file='1.txt', encoding='utf-8'): 14 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 15 FileNotFoundError: [Errno 2] No such file or directory: '1.txt' 16 ''' 17 with open(file='1.txt', encoding='utf-8'): 18 pass 19 20 21 # 2. 当发生FileNotFoundError异常时,可以通过捕获该异常并采取相应的处理措施,例如打印错误消息、提供默认值或执行其他操作。 22 try: 23 with open(file='1.txt', encoding='utf-8'): 24 pass 25 except FileNotFoundError as e: 26 print(e) # 打印错误信息 27 ''' 28 Traceback (most recent call last): 29 File "F:\异常04-常见内置异常类FileNotFoundError.py", line 14, in <module> 30 with open(file='1.txt', encoding='utf-8'): 31 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 32 FileNotFoundError: [Errno 2] No such file or directory: '1.txt' 33 '''
1 try: 2 with open(file=r'C:\Windows\System32\drivers\etc\hosts', encoding='utf-8') as my_file: 3 print("打开文件") 4 pass 5 except FileNotFoundError as e: 6 print(e) # 打印错误信息 7 except PermissionError as e: 8 print(e) # 打印错误信息 9 finally: 10 my_file.close()
1.4 IndexError
1 ''' 2 IndexError是Python中的一个内置异常类,它表示在使用了无效的索引或序列访问时发生了错误。 3 当你尝试使用超出范围的索引来访问列表、元组、字符串或其他序列类型的元素时,就会引发IndexError异常。 4 ''' 5 6 # 1. 列表越界:当你尝试使用一个超出列表范围的索引来访问其元素时,会引发IndexError异常 7 my_list = [1, 2, 3] 8 print(my_list[3]) # 这里将会引发IndexError异常 IndexError: list index out of range 9 10 # 2. 字符串索引错误:当你尝试使用一个超出字符串范围的索引来访问其字符时,同样会引发IndexError异常 11 my_string = "Hello" 12 print(my_string[5]) # 这里将会引发IndexError异常 IndexError: string index out of range 13 14 # 3. 元组索引错误:与列表类似,如果你尝试使用一个超出元组范围的索引来访问其元素,也会引发IndexError异常。 15 my_tuple = (1, 2, 3) 16 17 try: 18 print(my_tuple[3]) 19 except IndexError: 20 print("列表索引超出范围")
1.5 KeyError
1 ''' 2 KeyError是Python中的一个内置异常类,它表示在字典或类似映射对象中访问不存在的键时发生了错误。 3 当你尝试使用一个不存在的键来访问字典中的值时,就会引发KeyError异常。 4 ''' 5 6 # 1. 字典中不存在的键:当你尝试使用一个字典中不存在的键来访问其对应的值时,会引发KeyError异常 7 my_dict = {"name": "Alice", "age": 25} 8 print(my_dict["address"]) # 这里将会引发KeyError异常 KeyError: 'address' 9 10 # 2. 字典为空:如果尝试从一个空字典中访问任何键时,也会引发KeyError异常 11 empty_dict = {} 12 print(empty_dict["key"]) # 这里将会引发KeyError异常 KeyError: 'key' 13 14 # 3. 当发生KeyError异常时,可以通过捕获该异常并采取相应的处理措施,例如提供默认值、打印错误消息或执行其他操作。 15 my_dict = {"name": "Alice", "age": 25} 16 17 try: 18 print(my_dict["address"]) 19 except KeyError: 20 print("字典中没有'address'键")
1.6 MemoryError
1 ''' 2 MemoryError是Python中的一个内置异常类,它表示在尝试分配内存时发生了内存不足的错误。 3 当你的程序需要分配更多内存,但系统没有足够的可用内存时,就会引发MemoryError异常。 4 5 当发生MemoryError异常时,通常很难通过捕获该异常来进行处理。因为在发生内存错误之后,程序的状态可能已经无法恢复。 6 最好的做法是确保你的程序在设计上合理地管理内存,并尽量避免出现内存错误。 7 8 然而,你可以通过一些方法来缓解内存问题,如使用生成器而不是列表来生成大量数据,或者使用适当的数据结构和算法来减少内存占用。 9 ''' 10 # 11 # 1. 内存不足:当你的程序需要分配更多内存来存储数据或执行操作,但系统没有足够的可用内存时,会引发MemoryError异常 12 # large_list = [1] * 10**19 # OverflowError: cannot fit 'int' into an index-sized integer 13 large_list = [1] * 10 ** 9 14 large_list = large_list * 1000 # 这里将会引发MemoryError异常 MemoryError 15 16 17 # 2. 递归深度过大:在递归函数中,如果递归的层数过多导致内存占用过高,也可能引发MemoryError异常 18 def recursive_function(n): 19 if n == 0: 20 return 21 recursive_function(n - 1) 22 23 24 recursive_function(10 ** 6) # 这里可能会引发MemoryError异常
1.7 NameError
1 ''' 2 NameError是Python中的一个内置异常类,它表示在使用未定义或不存在的名称时发生了错误。 3 当你尝试访问一个不存在的变量、函数、类或模块时,就会引发NameError异常。 4 ''' 5 6 # 1. 变量未定义:当你尝试使用一个未定义的变量时,会引发NameError异常。 7 print(undefined_variable) # 这里将会引发NameError异常 8 9 # 2. 函数或方法未定义:当你尝试调用一个不存在的函数或方法时,也会引发NameError异常 10 undefined_function() # 这里将会引发NameError异常 11 12 # 3. 类或模块未定义:当你尝试访问一个不存在的类或模块时,同样会引发NameError异常 13 14 import undefined_module # 这里将会引发NameError异常 15 16 # 4. 处理异常 17 try: 18 print(undefined_variable) 19 except NameError: 20 print("变量未定义")
1.8 SyntaxError
1 ''' 2 SyntaxError是Python中的一个内置异常类,它表示在解析和执行Python代码时发生了语法错误。 3 当你的代码违反了Python语法规则或存在语法问题时,就会引发SyntaxError异常。 4 ''' 5 # 坑1. 拼写错误:当你在变量名、函数名或关键字中出现拼写错误时,会引发NameError已,而不是SyntaxError异常。 6 # prnt("Hello, World!") # 这里将会引发NameError异常 # NameError: name 'prnt' is not defined. Did you mean: 'print'? 7 8 # 坑2. 缩进错误:Python使用缩进来表示代码块,如果你的缩进不正确,例如混合使用空格和制表符,或者缺少了必要的缩进,都会引发IndentationError,而不是SyntaxError异常。 9 # def my_function(): 10 # print("Hello, World!") # IndentationError: expected an indented block after function definition on line 9 11 12 13 14 # 1.标点符号错误:如果你在代码中遗漏了逗号、冒号、引号等标点符号,也会导致SyntaxError异常 15 my_list = [1, 2, 3 16 print(my_list) # 这里将会引发SyntaxError异常,SyntaxError: '[' was never closed
语法错误,pycharm会把你标识出来
1.9 TypeError
''' TypeError是Python中的一个内置异常类,它表示在使用了错误的数据类型或参数类型时发生了错误。 当你尝试对不兼容的对象执行操作或传递错误类型的参数时,就会引发TypeError异常 ''' # 1. 不兼容的操作:当你对不支持的数据类型执行操作时,例如将字符串与数字相加,会引发TypeError异常 x = "Hello" y = 5 # result = x + y # 字符串与整型做+操作,会导致类型不兼容即这里将会引发TypeError异常 TypeError: can only concatenate str (not "int") to str # 坑1. 错误的参数类型:当你向函数传递错误类型的参数时,也会引发TypeError异常。 def multiply(a, b): return a * b result = multiply("2", 3) # 这里不会引发TypeError异常,因为字符串支持 str * n作为乘积即字符串变成n个str print(result) # 222
1.10 ValueError
''' ValueError是Python中的一个内置异常类,它表示在使用了正确类型的对象但是值不合法时发生了错误。 当你尝试对一个对象进行操作或传递给函数时,其值不符合预期范围或无效时,就会引发ValueError异常。 ''' # 1. 类型转换错误:当你尝试将一个无法转换为目标类型的对象转换为该类型时,会引发ValueError异常。 int_value = int("abc") # 这里将会引发ValueError异常 ValueError: invalid literal for int() with base 10: 'abc' # 2. 参数值无效:当你向函数传递了一个值,而该值无效或不在允许的范围内时,会引发ValueError异常 import math sqrt_result = math.sqrt(-1) # 这里将会引发ValueError异常 ValueError: math domain error # 3. 其他特定函数的异常:某些特定的函数也可能引发ValueError异常,以表明输入值不合法。 # 例如,enumerate()函数中的start参数必须是整数,如果不满足要求,则会引发ValueError异常。 for i, item in enumerate(["a", "b", "c"], start="1"): # 这里将会引发ValueError异常 TypeError: 'str' object cannot be interpreted as an integer print(i, item)
标签:错误,多组,my,引发,NameError,处理,print,异常 From: https://www.cnblogs.com/allenxx/p/17572618.html