首页 > 编程语言 >XX学Python·异常处理

XX学Python·异常处理

时间:2022-10-04 23:13:40浏览次数:56  
标签:Python 代码 except try XX 出现异常 print 异常

  • 使用try和except可捕获异常,即在出现异常后不会将代码终止运行,而是执行except中的代码处理异常
'''
格式:
try:
    可能出现异常的代码
except:
    如果出现了异常,就执行其中的代码
'''
# 需求:读取文件,如果文件不存在,则以写入方式打开
# 若try中代码出现异常,则执行except中的命令,try中的代码无异常,则不会执行
try:
    file = open('test.py', 'r')
except:
    file = open('test.py', 'w')
# 正常的Python开发中基本每个函数中都要出现一次异常捕获。代码健壮性:代码抵御异常的能力
  • 捕获指定类型的异常
    • 在except后边添加异常类型,就可捕获指定类型的异常
    • 如果想要捕获多种异常
      • 在except后添加多个异常类型,用逗号隔开,用括号包裹变成一个元组
      • 或可书写多个except
    • 如所有异常类型都无法捕获到该异常,或要捕获未知类型的异常,可使用Exception
    • 在异常类型后添加as变量名,变量就是异常对象,打印该对象就可以出现错误信息
    • try嵌套,如果里面的try没有捕获到这个异常,那外面的try会接收到这个异常,然后进行处理,如果外边的try依然没有捕获到,那么再进行传递。
# Exception是所有异常类的父类,可捕获所有异常类型
try:
    print('2' + 1)
    print(a)
    print(1 / 0)
except (ZeroDivisionError, NameError) as error:
    print('出现异常!', error)
except Exception as e:  # 要捕获未知类型异常使用Exception
    print('出现未知异常', e)
  • else 和 finally
    • else: try中控制的代码没有出现异常,则执行该结构内的代码
    • finally:无论出现什么情况都会执行finally里边的代码,哪怕程序崩溃
'''
格式:
try:
    可能会出现异常的代码
except:
    在出现异常后执行该命令处理异常
else:
    当没有出现异常时,执行该代码
'''
try:
    a = 1
    print(a)
except:
    print('出现异常了')
else:
    # try中的代码正常执行没有任何异常,则执行else里边的代码
    print('没有异常,虚惊一场')

'''
try:
    可能出现异常的代码
except:
    代码出现异常后执行该代码处理异常
else:
    如果try中的代码不出现异常,则执行其中的代码
finally:
    无论如何都会执行finally中的代码
'''

# 无论任何情况,finally中的代码都要被执行
try:
    a = 1
    print(a)
    print(1/0)
except NameError:
    print('出现异常了')
else:
    print('没有出现异常')
finally:
    print('出现不出现异常都要执行')
# 代码写到finally中,哪怕程序报错终止,代码依旧要执行完成
# 但写到try结构外,程序报错终止将不会继续执行外部代码
print('try结构之外书写内容')
  • 自定义异常抛出
    • 自定义异常一定要继承自Exception
    • 自定义异常可以使用raise抛出,可以进行捕获或者导致程序终止
    • raise可以抛出系统异常,也可以抛出自定义异常
# 在自定义异常时,只要继承自Exception就可以当做异常抛出
# 继承后要重写Exception方法,添加我们需要的内容

class PassWorldError(Exception):
    error_count = 0

    def __init__(self, str):
        super().__init__(str)
        # 在此处可以添加自定义操作
        PassWorldError.error_count += 1

# raise可以手动抛出异常,抛出异常后,可以直接终止程序,或使用try except进行捕获
# raise可以抛出自定义异常,也可以抛出系统异常
try:
    password = input('请输入您的密码:')
    if len(password) < 6:
        raise PassWorldError('您的密码不足6位,请重新输入')
        # raise NameError('您的密码错误了')
except PassWorldError as error:
    print(error)

# raise PassWorldError('密码错误')

标签:Python,代码,except,try,XX,出现异常,print,异常
From: https://www.cnblogs.com/portb/p/16754766.html

相关文章

  • XX学Python·模块和包
    模块的导入#可将别人写好或自己写好的功能直接导入新文件或工程内,导入后可直接调用.#我们没有实现模块中的功能,但是我们讲模块导入后就可以使用该功能,类似于继承......
  • XX学Python·进程与线程
    多任务编程-进程多任务执行方式并发:在一段时间内交替去执行任务并行:多核cpu每个cpu执行一个任务。注:任务>cpu时,每个cpu并发执行多个任务进程:计算机中的程......
  • XX学Python·网络
    TCP客服端程序开发(TransmissionControlProtocol)传输控制协议导入socket模块创建TCP套接字‘socket’参数1:‘AF_INET’,表示IPv4地址类型参数2:‘SOCK_STRE......
  • 基于python的物业信息管理系统设计与实现-计算机毕业设计源码+LW文档
    摘 要网络的广泛应用给生活带来了十分的便利。所以把物业信息管理与现在网络相结合,利用Python技术建设物业信息管理系统,实现物业信息的信息化。则对于进一步提高物业信息......
  • XX学Python·字典
    字典以键值对形式存储,方便快速存取,字典的键要见名知意。字典占用空间远大于列表,牺牲空间利用快速存取的特性。字典是无序的,因为不能通过索引进行键值对获取。Python3......
  • 基于python的校园用车管理系统设计与实现-计算机毕业设计源码+LW文档
    开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:PyCharm 浏览器:谷歌浏览器数据库:DROPTABLEIFEXISTS......
  • XX学Python·元组
    元组可以储存多个数据,元组里的数据不能被修改(元组定义后只能被查询)元组定义:变量=(数据1,数据2,数据3......);单元素也要有逗号,变量=(数据,)。元组定义时,小括号可省略......
  • XX学Python·集合
    集合集合是一个无序,不重复的数据序列。无序:程序员无法控制其排布顺序,无法使用索引查找或修改数据不重复:没法在集合里放入相同的值,会自动去重,类似于字典的键定......
  • XX学Python·总结和推导式
    公共方法总结+:有{}的都不行,即字典,集合适用所有基础数据类型(intfloatbool),容器类型只有列表,元组,字符串两侧要是同种数据类型加法运算在容器类型中是拼接的意......
  • XX学Python·概述
    Python概述创始人:吉多·范罗苏姆龟叔为什么要学习Python:大势所趋,简单易学,使用范围广我们本次学习使用Python3.x版本Python在大数据生态中应用非常广泛Python解释器......