📜  在 python 中抛出错误(1)

📅  最后修改于: 2023-12-03 15:23:16.373000             🧑  作者: Mango

在 Python 中抛出错误

在编写 Python 代码时,经常需要对代码执行过程中出现的各种错误进行处理。Python中的错误分为语法错误(SyntaxError)和异常(Exception)。

语法错误是在程序中存在拼写错误、缩进错误、语法错误等情况。这类错误会直接导致代码无法编译执行。例如:

if a == 1 
    print('a equals to 1')

运行时会报出 SyntaxError 的错误提示信息:

  File "<ipython-input-1-e0119992af96>", line 1
    if a == 1
             ^
SyntaxError: invalid syntax

而异常是在程序执行过程中出现的错误。例如,当尝试访问不存在的列表或字典中的数据时,会抛出 IndexError和 KeyError 异常;当尝试除以0时,会抛出 ZeroDivisionError 异常。

抛出自定义异常

在 Python 中,我们可以自定义异常,并在代码执行中抛出这些异常。自定义异常需要继承 Exception 父类,通常在其中定义一个错误提示信息。

class MyException(Exception):
    def __init__(self, message):
        self.message = message

然后在程序中需要抛出异常的地方,我们可以使用 raise 语句进行抛出。

def divide(num1, num2):
    if num2 == 0:
        raise MyException('除数不能为0')
    else:
        return num1/num2

divide(10, 0)

以上代码中,当被除数为0时,便抛出自定义的 MyException 异常,程序会停止执行,将错误信息输出至控制台。我们也可以在程序中使用 try...except 语句来捕获和处理异常。

try:
    divide(10, 0)
except MyException as e:
    print("自定义异常: ", e.message)
通过内置异常抛出错误

Python中有很多内置异常可以用来代替自定义异常。例如,当尝试访问不存在的键时,我们可以抛出 KeyError 异常。

my_dict = {'a': 1, 'b': 2}
try:
    value = my_dict['c']
except KeyError:
    print("不存在的键")

当运行以上代码时,会抛出 KeyError 异常,程序会停止执行,将错误信息输出至控制台。

另外,我们还可以使用 assert 语句来抛出内置的 AssertionError 异常。

num = 2
assert num == 1, "num 不等于 1"

当 num 不等于 1 时,会抛出 AssertionError 异常,我们也可以在后续代码中使用 try...except 语句来捕获和处理这个异常。

以上是 Python 中抛出错误的简单介绍,希望能够帮助到大家。