Python中的异常类可以帮助开发者更加方便地处理程序中出现的异常情况。在某些特定的情况下,如果程序中出现了自定义异常,可以更好地解决某些问题。在Python中定义自己的异常类是非常简单的,可以分为以下步骤:
1. 异常类的定义
通过继承Exception
类来定义自己的异常类,如下示例:
class MyException(Exception):
def __init__(self, message):
self.message = message
def __str__(self):
return self.message
以上代码中,我们自定义了一个名为MyException
的异常类,继承了Python中的Exception
类,需要传递一个message
参数初始化,__str__
方法将异常信息转化为字符串。
2. 抛出异常
在程序中遇到特定的情况,如果需要抛出自定义异常,可以使用raise
语句来实现,如下所示:
age = 10
if age < 18:
raise MyException("You are too young to visit.")
以上代码中,如果年龄小于18岁,将抛出MyException
异常。
3. 异常处理
在程序中遇到异常情况,可以通过try...except
语句来捕获异常,如下所示:
try:
num = int(input("Please input a number:"))
if num < 0:
raise MyException("The number cannot be negative.")
except MyException as e:
print(e)
以上代码中,如果输入的数字为负数,将抛出MyException
异常并被except
捕获并打印异常信息。
示例一
下面是一个例子。在这个例子中,我们创建了一个名为DivisorZeroError
的异常类,用于处理除数为0的情况。我们通过raise
语句在程序中抛出该异常,并通过try...except
语句用于处理这个异常。
class DivisorZeroError(Exception):
pass
try:
x = int(input("Please enter a number: "))
y = int(input("Please enter a number the second time: "))
if y == 0:
raise DivisorZeroError("Divisor cannot be zero.")
result = x / y
print("Result is:", result)
except DivisorZeroError as e:
print(e)
该程序会提示用户输入两个数字并计算它们的商。当用户输入的第二个数字为0时,会抛出自定义异常DivisorZeroError
,并打印出错误信息。
示例二
下面是另外一个例子。在这个例子中,我们创建了一个名为InvalidInputError
的异常类,用于处理无效输入的情况。如果输入的字符不是数字,我们通过raise
语句抛出该异常。
class InvalidInputError(Exception):
pass
try:
x = input("Please enter a number: ")
if not x.isnumeric():
raise InvalidInputError("Invalid input.")
result = int(x) * 10
print("Result is:", result)
except InvalidInputError as e:
print(e)
该程序会提示用户输入一个数字,并将输入的数字乘以10。如果用户输入的不是数字,就会抛出自定义异常InvalidInputError
,并打印出错误信息。