一、什么是异常

"""
异常:错误,bug
处理异常:尝试执行某句可能出现异常的语句,
若出错则用正确的代码去替代。 try:
可能发生错误的代码
except:
如果出现异常执行的代码
""" def t1():
try:
f = open('test.txt', 'r')
except:
f = open('test.txt', 'w') def t2():
try:
b.bar()
except:
class Car(object):
def bar(self):
print("刹车") b = Car()
b.bar() if __name__ == '__main__':
t2()

二、异常类型

(1)"""
1.捕获指定异常,异常类型有多种
2.若尝试执行的代码异常类型与捕获的异常类型不同则报错
3.try下方一般只放一行代码,若有多行可能异常代码,
则捕获一个异常类型后函数返回,及只能捕获一个异常类型。
4.捕获多个指定异常
5.捕获所有异常,Exception 是所有程序异常类的父类
"""

def t3():
"""
捕获多个指定异常
捕获异常描述信息
"""
try:
print(num)
except (NameError, ZeroDivisionError) as result:
print(result)
# name 'num' is not defined def t4():
try:
print(num)
except Exception as result:
print(result) if __name__ == '__main__':
# t1()
# t2()
# t3()
t4()

(2)

"""
else:没有异常时执行的代码
finally: 无论是否异常都执行的代码,例如:关闭文件
"""

def t1():
try:
print(1)
except Exception as r:
print(r)
else:
print('我是else,当无异常时执行的代码') def t2():
try:
f = open('text.txt', 'r')
except Exception as r:
print(r)
f = open('text.txt', 'w')
else:
print('没有异常!')
finally:
print('关闭文件')
f.close() if __name__ == '__main__':
# t1()
t2()

三、异常传递

"""
异常传递(Exception passing):
异常时可以嵌套书写的,由外到内 案例1:1.尝试只读打开test.txt 文件,有内容存在则读取,无则提示用户
2.循环读取,无内容时退出循环,若文件意外终止,则提示用户
"""
import time try:
f = open('text.txt')
try:
while True:
content = f.readline()
if len(content) == 0:
break
time.sleep(2)
print(content)
except:
# 在命令提示符中按 ctrl + c ,进行测试
print('意外终止读取数据')
finally:
f.close()
print('关闭文件')
except:
print('文件不存在')

四、自定义异常

"""
自定义异常(Custom exception)
用来报错,不合逻辑的错
案例1:密码长度不足,则报错。
1.自定义异常
2.用 raise 异常类对象,来抛出异常的描述信息
3.捕获异常
""" class ShortInputError(Exception):
"""
自定义异常类,继承Exception
"""
def __init__(self, length, min_len):
self.length = length
self.min_len = min_len def __str__(self):
"""
设置抛出异常的描述信息
"""
return f'您输入的密码长度是{self.length},' \
f'不能小于最小长度 {self.min_len}' def main1():
try:
code = input('请输入密码:\n')
if len(code) < 3:
# 抛出异常类创建对象
raise ShortInputError(len(code), 3)
except Exception as r:
# 捕获该异常
print(r)
else:
print('密码已输入完成') if __name__ == '__main__':
main1()

Python——捕获异常的更多相关文章

  1. Python捕获异常

    一.常见异常 1.语法错误:SyntaxError:invalid syntax (1)案例: (1)解决方法: ①查看代码有没有红色波浪线 ②熟悉python基本语法 2.变量名不存在:NameEr ...

  2. python捕获异常及方法总结

    调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点,进行分析改正:另一方面,有些异常是不可避免的,但 ...

  3. python捕获异常、处理异常

    https://blog.csdn.net/jmilk/article/details/50047457

  4. 网上都没有提到的教程:python捕获异常后,怎么输出错误文件和行号

    1.假设输出不存在的变量 a try: print(a) except NameError as e: print('发生错误的文件:', e.__traceback__.tb_frame.f_glo ...

  5. python 捕获异常顺序

    catch 异常的时候,有关的异常(若是抛出子类异常,则父类异常的except也算.反之不算)except的语句是按代码顺序执行, 也就是说,当一个异常发生时,从若干except中若遇见异常类基类,父 ...

  6. python 捕获异常详细信息

    import os import sys import traceback BasePath = os.path.dirname(os.getcwd()) sys.path.append(BasePa ...

  7. python 捕获异常

  8. python的运维交流学习笔记

    #!/usr/bin/env | #!/usr/bin/python#coding:gbk #python 运维练习 #需求: #1.利用python实现自动监控服务器性能 #2.并将监控到的数据进行 ...

  9. 用Python爬E站本

    用Python爬E站本 一.前言 参考并改进自 OverJerry 大佬的 教你怎么用Python爬取E站的本子_OverJerry. 本文为技术学习记录,不提供访问无存在网站的任何方法,也不包含不和 ...

随机推荐

  1. Xmind8 Pro 破解教程(序列号|破解文件)

    最近需要打开文件后缀名为.xmind的文件,所以下载了Xmind8 .打开以后想要导出,奈何普通版本只能导出.txt文本文档,所以只好动手pj.话不多说看下边.一.下载XMindCrack.jar文件 ...

  2. vue响应式原理的实现

    响应式实现的原理---如何监控数据的变化:两种方法 Vue 2.x defineProperty(es5) Vue 3.x Proxy(es6) 语法:Object.defineProperty(参数 ...

  3. 通信协议之Modbus协议(一)

    Modbus通信协议: 简介:Modbus协议是应用于电子控制器上的一种通用语言 通过此协议,控制器相互之间,控制器经由网络(例如以太网) 和其他设备之间可以通信,他已经成为一种通用工业标准,有啦它 ...

  4. ATL的GUI程序设计(2)

    from:http://blog.titilima.com/atlgui-2.html 第二章 一个最简单窗口程序的转型 我知道,可能会有很多朋友对上一章的"Hello, World!&qu ...

  5. windows 安裝 gcc 編譯器 - MinGW

    MinGW 介紹 MinGW 全稱 Minimalist GNU For Windows,是個精簡的Windows平台C/C++.ADA及Fortran編譯器,相比Cygwin而言,體積要小很多,使用 ...

  6. Zabbix监控实现跨区域跨网络监控数据

    Zabbix监控实现跨区域跨网络监控数据 环境: 公司现有服务器10台,其中5台服务器有一台安装了zabbix,并且这5台服务器处于一个网络,只有一台服务器有公网ip, 另外的5台处于另一个网络,仅有 ...

  7. oracle安装异常汇总

    . 运行 ./runInstaller 安装界面出现乱码问题 解决方案: export NLS_LANG=AMERICAN_AMERICA.UTF8 export LC_ALL=C .运行 ./run ...

  8. Go语言实现:【剑指offer】剪绳子

    该题目来源于牛客网<剑指offer>专题. 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m.n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],-,k[ ...

  9. 将Spring实战第5版中Spring HATEOAS部分代码迁移到Spring HATEOAS 1.0

    最近在阅读Spring实战第五版中文版,书中第6章关于Spring HATEOAS部分代码使用的是Spring HATEOAS 0.25的版本,而最新的Spring HATEOAS 1.0对旧版的AP ...

  10. 万字分享,我是如何一步一步监控公司MySQL的?

    整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 更多优选 一口气说出 9种 分布式ID生成方式,面试官有点懵了 ...