当我们在编写Python程序时,常常会遇到各种各样的异常情况,比如语法错误、类型错误、文件不存在等。这时就需要使用异常处理机制来处理这些异常,从而保证程序的正确性和稳定性。本文将对Python基础异常处理做一个总结,包括异常的基本语法、常用的异常类型、自定义异常以及异常处理语句try-except、try-except-else和try-except-finally。
异常的基本语法
在Python中,我们使用raise语句来抛出异常,用try-except语句来捕获异常。异常通常是从Exception类派生的子类。我们可以自己定义一个异常类,只需要继承Exception类即可。下面是一个简单的示例:
class MyError(Exception):
def __init__(self, message):
self.message = message
try:
raise MyError('something wrong')
except MyError as e:
print(e.message)
在上面的代码中,我们定义了一个MyError类,它继承了Exception类。然后我们使用raise语句来抛出这个异常,并在try语句中进行处理。
常用的异常类型
Python中常见的异常类型包括:
- IOError:文件输入输出异常;
- ZeroDivisionError:除以0异常;
- ImportError:导入模块异常;
- ValueError:传入无效参数;
- TypeError:传入参数的类型与所需类型不符;
- IndexError:访问一个不存在的索引。
下面是一个索引异常的示例:
lst = [1, 2, 3]
try:
print(lst[3])
except IndexError as e:
print(e)
在上面的代码中,我们尝试访问了一个不存在的索引,会抛出IndexError异常。通过try-except语句进行捕获并输出异常信息。
自定义异常
当系统提供的异常类型无法满足我们的需求时,我们可以自定义一个异常类。自定义的异常类需要继承Exception类或其子类,然后在类中实现特定的方法即可。下面是一个自定义异常类的示例:
class MyError(Exception):
def __init__(self, message):
self.message = message
num = 100
try:
if num > 50:
raise MyError('num should be less than or equal to 50')
except MyError as e:
print(e.message)
在上面的代码中,我们定义了一个MyError类,继承于Exception类。然后在try语句中检查一个数值是否大于50,如果是则抛出自定义的异常类并进行处理。
异常处理语句
在Python中,异常处理语句主要有三种形式:try-except、try-except-else和try-except-finally。
try-except
try-except语句的基本形式为:
try:
# 可能发生异常的代码
except ExceptionType1:
# 异常处理代码1
except ExceptionType2:
# 异常处理代码2
else:
# 没有异常时执行的代码
下面是一个示例代码:
try:
a = 1 / 0
except ZeroDivisionError as e:
print(e)
else:
print('no exception')
在上面的代码中,我们尝试除以0来抛出ZeroDivisionError异常,然后通过try-except语句进行处理,并且在没有异常时执行else语句中的代码。
try-except-else
try-except-else语句的基本形式为:
try:
# 可能发生异常的代码
except ExceptionType1:
# 异常处理代码1
except ExceptionType2:
# 异常处理代码2
else:
# 没有异常时执行的代码
finally:
# 不管有没有异常都会执行的代码
下面是一个示例代码:
try:
a = 1 / 1
except ZeroDivisionError as e:
print(e)
else:
print('no exception')
finally:
print('finally')
在上面的代码中,我们尝试除以1,不会抛出异常,然后通过try-except-else语句进行处理。同时无论有没有异常,都会执行finally语句中的代码。
try-except-finally
try-except-finally语句的基本形式为:
try:
# 可能发生异常的代码
except ExceptionType1:
# 异常处理代码1
except ExceptionType2:
# 异常处理代码2
finally:
# 不管有没有异常都会执行的代码
下面是一个示例代码:
try:
a = 1 / 0
except ZeroDivisionError as e:
print(e)
finally:
print('finally')
在上面的代码中,我们尝试除以0来抛出ZeroDivisionError异常,然后通过try-except-finally语句进行处理。同时无论有没有异常,都会执行finally语句中的代码。
以上就是Python基础异常处理梳理总结的详细攻略。希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python基础异常处理梳理总结 - Python技术站