Python Throw Exception简介
下面的文章提供了一个Python抛出异常的概要。当我们的程序中没有程序或语法错误时,Python有时会返回错误或异常,有时错误的输入也会产生异常,如两个数字的除法不会返回异常,但数字除以0会返回异常。因此,我们需要做适当的异常处理,我们需要检测我们程序的哪一部分可以返回异常,我们可以用try-catch块来包围这一部分,并向用户返回一个适当的异常,这样他就可以在程序执行过程中识别该程序。
引发异常
我们可以使用 raise 关键字和异常的名称,通过 python 强行抛出一个异常。我们也可以在异常中传递任何信息,或者简单地写一个异常名称。
例子 #1
代码
raise NameError("Hello")
输出
正如你所看到的,python返回了一个带有Hello消息的NameError异常。我们也可以生成没有任何消息的异常。
例子 #2
代码
raise NameError
输出
正如你所看到的,这个异常被生成了,但它并不理想。所以我们可以尝试捕捉这个异常,并尝试在程序执行过程中发生这种异常时显示一个自定义的消息。
例子 #3
代码
try:
raise NameError('Hello')
except NameError:
print('Sorry Exception is generated')
输出
在这个例子中,你可以看到我们在try块中写了我们的代码。我们在try块中编写了他们的一段可能返回异常的代码,并在catch块中捕获该异常。我们定义了except块,并定义了我们要寻找的异常的名称。如果程序返回了那个异常,那么我们就会向用户返回一个自定义的信息,而且它看起来比默认的python异常更干净,更有希望。
用户定义的异常
用户通过制作类来定义这些类型的异常。一般来说,异常都是从Exception类中继承的。这个类与我们在程序中制作的其他自定义类非常相似。我们可以在这些类里面写任何东西,但最好的做法是保持非常简单,只定义异常处理程序需要的属性或变量或信息。
例子 #1
代码
class failedException(Exception):
def __init__(self):
super()
try:
marks = 35
print("Your marks are: "+str(marks))
if marks<36:
raise failedException
except failedException:
print("Sorry! You are failed!")
else:
print("Congratulations! You are passed")
输出
在上面的程序中,你可以看到我们已经定义了 failedException 类。你可以按照你的意愿定义任何名字。我们正在继承这个异常类。我们在里面定义并使用了构造函数;我们调用基类方法,即super()。我们创建了一个尝试块,然后我们定义了一个变量mark,其值为35。首先,我们只是打印消息和变量的值。然后我们检查值是否小于36,然后我们引发异常。
我们可以为这个异常写任何名字,因为它是用户定义的。然后我们定义了except,用来捕捉我们的异常并打印定义的消息,在else条件下,我们定义了另一个消息。当我们的条件失败时,我们定义的异常就会被调用,并打印出一条信息。
例子 #2
代码
class MarksRange(Exception):
def __init__(self, marks, message="You are failed!"):
self.marks = marks
self.message = message
super().__init__(self.message)
def __str__(self):
return f'{self.marks} -> {self.message}'
marks = int(input("Enter marks: "))
if not marks > 36:
raise MarksRange(marks)
输出
在上面的程序中,我们创建了一个自定义的类MarksRange并继承了基类Exception。
我们在类中定义了构造函数,并传递了self、marks和message三个变量,这些变量用来保存我们的值。我们用我们的自定义参数,即marks和message,来重写我们的构造函数。我们使用super()手动调用父类的异常,并使用自我参数 marks 和 messages。
我们使用 __str__ 来显示类的异常和我们定义的消息,并且我们的异常 MarksRange 将被引发。Python 将要求用户输入分数,然后检查分数是否小于 36。如果条件符合,那么我们就会引发异常;如果条件不符合,就不会发生什么。当我们创建一个大型的Python程序时,将自定义的用户定义的异常保存在一个单独的文件中总是一个很好的做法;这是一种标准的流程,需要遵循。我们也可以将我们的异常文件命名为exception.py或error.py。
结论 - Python 抛出异常
用户定义的异常是指用户为处理一些没有内置的错误情况而定义的异常。我们要制作自定义的异常,并将其相应地显示给用户端。