1. 简介
Python中的异常处理是一种处理程序运行时可能出现的错误或异常情况的方法。当程序遇到错误或异常情况时,它将引发异常。如果在代码中没有适当的异常处理,程序将停止执行并输出错误消息。为了避免这种情况的发生,我们需要使用异常处理。
2. try except语句
异常处理包括try-except语句,在try块中放置可能发生异常的代码,在except块中处理异常。如果在try块中捕获到异常,则程序将转到相应的except块。异常处理可以帮助我们跳过错误,继续执行后面的代码。
2.1 基本语法
try:
# 可能会发生异常的代码块
except:
# 发生异常时执行的代码块
2.2 具体实例
我们来看一个简单的例子,计算两个数字的商:
try:
a = int(input('请输入被除数:'))
b = int(input('请输入除数:'))
result = a / b
print(result)
except:
print('发生错误')
如果输入的除数为0,程序将会输出:
发生错误
这个例子中,我们用了try-except语句来避免由于除数为0而导致程序抛出ZeroDivisionError异常。因为在except块中处理了这个异常。
3. 处理多种异常
try-except语句还可以捕获多个异常。你可以使用多个except子句来处理不同类型的异常。
3.1 基本语法
try:
# 可能会发生异常的代码块
except Exception1:
# 处理 Exception1 类型的异常
except Exception2:
# 处理 Exception2 类型的异常
else:
# 如果没有捕获到任何异常,则执行这个块的代码
finally:
# 不管是否有异常发生,都会执行这个块的代码
3.2 具体实例
try:
a = int(input('请输入被除数:'))
b = int(input('请输入除数:'))
result = a / b
except ZeroDivisionError:
print('除数不能为0')
except ValueError:
print('请输入数字')
except:
print('发生错误')
else:
print('两个数字的商为:', result)
finally:
print('程序结束')
如果我们输入一个非数字的字符,程序将输出:
请输入数字
如果我们将除数输入为0,程序将输出:
除数不能为0
否则,程序将输出:
两个数字的商为: 商的值
无论发生什么,程序都将输出:
程序结束
4. 自定义异常
Python语言内置许多异常类,但有时候我们需要自己定义一个异常类以满足特殊需求。
4.1 基本语法
我们可以通过继承Exception类来定义自己的异常类。
class 自定义异常类名(Exception):
def __init__(self, arg):
self.args = arg
我们可以使用raise语句来引发一个异常。
raise 自定义异常类名(参数)
4.2 具体实例
我们定义一个简单的自定义异常类来表示年龄无效。
class InvalidAgeException(Exception):
pass
age = int(input('请输入年龄:'))
if age < 0 or age > 100:
raise InvalidAgeException('年龄无效')
else:
print('年龄输入正确')
如果我们输入的年龄小于0或大于100,程序将会抛出InvalidAgeException异常,输出:
InvalidAgeException: 年龄无效
否则,程序将会输出:
年龄输入正确
5. 总结
异常处理是Python中一种非常重要的编程技能。在编写程序时,我们需要考虑可能会出现的异常情况,并进行适当的异常处理。try-except语句可以帮助我们避免程序因为异常而停止执行,并且帮助我们跳过错误,继续执行后面的代码。除此之外,我们还可以定义自己的异常类来满足特殊需求。