📜  Python中的内置异常(1)

📅  最后修改于: 2023-12-03 14:46:39.560000             🧑  作者: Mango

Python中的内置异常

在Python中,异常常常用于处理程序中的错误和意外情况。Python提供了许多内置的异常类型来帮助开发人员构建健壮的应用程序。在本文中,我们将探讨Python中的一些常见内置异常类型。

1. AttributeError

当试图访问一个对象没有的属性时,抛出AttributeError异常。

class MyClass:
    def __init__(self):
        self.foo = 42

my_instance = MyClass()
print(my_instance.foo)
# 输出: 42

print(my_instance.bar)
# 引发AttributeError

在上面的示例中,我们尝试访问my_instance对象的bar属性,该属性不存在,因此引发AttributeError。

2. ImportError

当尝试导入一个不存在的模块或包时,抛出ImportError异常。

import nonexistent_module
# 引发ImportError

在上面的示例中,我们尝试导入名为nonexistent_module的模块,但该模块不存在,因此引发ImportError。

3. IndexError

当使用索引访问序列中不存在的元素时,抛出IndexError异常。

my_list = [1, 2, 3]
print(my_list[0])
# 输出: 1

print(my_list[3])
# 引发IndexError

在上面的示例中,我们尝试访问索引为3的元素,但my_list只有三个元素,因此引发IndexError。

4. KeyError

当使用字典中不存在的键访问字典时,抛出KeyError异常。

my_dict = {'a': 1, 'b': 2}
print(my_dict['a'])
# 输出: 1

print(my_dict['c'])
# 引发KeyError

在上面的示例中,我们尝试使用c作为my_dict的键,但该键不存在,因此引发KeyError。

5. NameError

当尝试访问未定义的变量或函数时,抛出NameError异常。

def foo():
    print(bar)

foo()
# 引发NameError

在上面的示例中,我们尝试在foo函数中访问未定义的变量bar,因此引发NameError。

6. TypeError

当操作或函数应用于不合适的数据类型时,抛出TypeError异常。

my_list = [1, 2, 3]
my_dict = {'a': 1, 'b': 2}

print(my_list + my_dict)
# 引发TypeError

在上面的示例中,我们尝试将列表my_list和字典my_dict相加,但这两种数据类型不兼容,因此引发TypeError。

7. ValueError

当函数参数在类型上是可接受的,但在值上无效时,抛出ValueError异常。

def validate_age(age):
    if age < 0 or age > 120:
        raise ValueError('Invalid age')

validate_age(-2)
# 引发ValueError

在上面的示例中,我们定义了一个函数validate_age,该函数接受一个年龄参数并验证该参数是否在0到120之间。如果年龄无效,则引发ValueError。

8. ZeroDivisionError

当尝试除以0时,抛出ZeroDivisionError异常。

dividend = 42
divisor = 0

result = dividend / divisor
# 引发ZeroDivisionError

在上面的示例中,我们尝试将42除以0,这是不合法的操作,因此引发ZeroDivisionError。

以上是Python中的一些常见内置异常类型。这些异常类型有助于开发人员构建健壮的应用程序,以处理程序中出现的错误和意外情况。