在学习Python技术的时候,我们经常会遇到一些异常,例如导致程序在运行过程中出现的中断或退出,我们都称之为异常,大多数的异常都不会被程序处理,而是以错误信息的形式展现出来。本期Python培训教程就算教大家关于Python异常机制的内容。
Python培训教程分享:Python异常机制,首先我们要理解什么叫做异常?
在程序运行过程中,总会遇到各种各样的问题和错误。有些错误是我们编写代码时自己造成的:比如语法错误、调用错误,甚至逻辑错误。还有一些错误,则是不可预料的错误,但是完全有可能发生的:比如文件不存在、磁盘空间不足、网络堵塞、系统错误等等。
这些导致程序在运行过程中出现异常中断和退出的错误,我们统称为异常。大多数的异常都不会被程序处理,而是以错误信息的形式展现出来。
异常的分类:
异常有很多种类型,Python内置了几十种常见的异常,无需特别导入,直接就可使用。
需要注意的是,所有的异常都是异常类,首字母是大写的!
异常的危害:
如果程序中一旦出现了异常的语句代码,则该异常就会立即中断程序的运行!
因此:为了保证程序的正常运行,提高程序健壮性和可用性。我们应当尽量考虑全面,将可能出现的异常进行处理,而不是留在那里,任由其发生。
基本语法:
异常的基本结构:try except
# (1)通用异常
try:
pass # 正常执行语句
except Exception as ex:
pass # 异常处理语句
# (2)指定异常
try:
pass # 正常执行语句
except <异常名>:
pass # 异常处理语句
#(3) 捕获多个异常
# 捕获多个异常有两种方式,第一种是一个except同时处理多个异常,不区分优先级:
try:
pass # 正常执行语句
except (<异常名1>, <异常名2>, ...):
pass # 异常处理语句
# 第二种是区分优先级的:
try:
pass # 正常执行语句
except <异常名1>:
pass # 异常处理语句1
except <异常名2>:
pass # 异常处理语句2
except <异常名3>:
pass # 异常处理语句3
# 异常嵌套
try:
try:
with open("abc") as f:
pass
except NameError as e:
print(e)
except OSError as e:
print("OSError:",e.strerror)
机制说明:
首先,执行try子句(在关键字try和关键字except之间的语句)
如果没有异常发生,忽略except子句,try子句执行后结束。
如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常那么对应的except子句将被执行。
在Python的异常中,有一个通用异常:Exception,它可以捕获任意异常。
finally
try:
pass # 正常执行语句
except Exception as e:
pass # 异常处理语句
finally:
pass # 无论是否发生异常一定要执行的语句,比如关闭文件,数据库或者socket
raise语句
很多时候,我们需要主动抛出一个异常。Python内置了一个关键字raise,可以主动触发异常。
raise可以抛出自定义异常,我们已将在前面看到了python内置的一些常见的异常类型。大多数情况下,内置异常已经够用了。但是有时候你还是需要自定义一些异常:自定义异常应该继承Exception类,直接继承或者间接继承都可以,例如:
# 1.用户自定义异常类型
class TooLongExceptin(Exception):
"this is user's Exception for check the length of name "
def __init__(self, len):
self.len = len
def __str__(self):
return "输入姓名长度是" + str(self.len) + ",超过长度了"
try:
name = input("enter your name:")
if len(name) > 5:
raise TooLongExceptin(len(name))
else:
print(name)
except TooLongExceptin as error: # 这里异常类型是用户自定义的
print("打印异常信息:", error)
以上就是为大家介绍的Python的异常机制内容,希望上面的介绍能够给大家带来帮助,如果大家想要学习python或者是正在学习python知识,但是苦于没有人指导,那么可以添加我们的qq群-790693323,点击添加(加群备注:领资料)不仅可以领取python学习资料,并且群内还有专业的老师定期解答大家的问题,想要学习python的小伙伴,不要错过。