Python——捕获异常
一、什么是异常
"""
异常:错误,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——捕获异常的更多相关文章
- Python捕获异常
一.常见异常 1.语法错误:SyntaxError:invalid syntax (1)案例: (1)解决方法: ①查看代码有没有红色波浪线 ②熟悉python基本语法 2.变量名不存在:NameEr ...
- python捕获异常及方法总结
调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点,进行分析改正:另一方面,有些异常是不可避免的,但 ...
- python捕获异常、处理异常
https://blog.csdn.net/jmilk/article/details/50047457
- 网上都没有提到的教程:python捕获异常后,怎么输出错误文件和行号
1.假设输出不存在的变量 a try: print(a) except NameError as e: print('发生错误的文件:', e.__traceback__.tb_frame.f_glo ...
- python 捕获异常顺序
catch 异常的时候,有关的异常(若是抛出子类异常,则父类异常的except也算.反之不算)except的语句是按代码顺序执行, 也就是说,当一个异常发生时,从若干except中若遇见异常类基类,父 ...
- python 捕获异常详细信息
import os import sys import traceback BasePath = os.path.dirname(os.getcwd()) sys.path.append(BasePa ...
- python 捕获异常
- python的运维交流学习笔记
#!/usr/bin/env | #!/usr/bin/python#coding:gbk #python 运维练习 #需求: #1.利用python实现自动监控服务器性能 #2.并将监控到的数据进行 ...
- 用Python爬E站本
用Python爬E站本 一.前言 参考并改进自 OverJerry 大佬的 教你怎么用Python爬取E站的本子_OverJerry. 本文为技术学习记录,不提供访问无存在网站的任何方法,也不包含不和 ...
随机推荐
- HDS协议介绍
一.什么是HTTP Dynamic Streaming 使用传统的HTTP协议进行在线播放叫做“渐进下载”,所有的视频内容从头到尾必须从服务器传输到客户端,用户只能在传输完的视频长度中选择播放点,而不 ...
- ReactNative---卡顿问题及性能优化
ReactNative性能优化 在reactnative 中如果要更改DOM中的数据显示,只有通过setState方法来实现:但是当setState时,要刷新整个DOM:在一般情况先还能保证体验,但是 ...
- react中,路由的使用。import {BrowserRouter,Switch,Route} from "react-router-dom";
import React from "react"; import ReactDom from "react-dom"; import {BrowserR ...
- 解决dotnet错误 System.InvalidOperationException Message=Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found.
开始=>设置=>manage user certificats (管理用户证书),里面所有的.net core的全部删除 然后控制台执行: dotnet dev-certs https ...
- java与c++,python
Java与C++的异同点总结 C++/C/JAVA/Python之间的区别? C++语言与Java语言的区别有哪些? java与C++的区别
- [转载]goldendict下优质词典简介及安装
使用Arch Linux一年以来,如果要问自己最为中意的词典程序是? 当然是Goldendict啦!想详细了解这款瑞士军刀的请猛戳这里. 以前在Win下都是用的lingoes, 感觉还不错,词典库很全 ...
- Dapper系列 作者:懒懒的程序员一枚
Dapper 第一篇简单介绍什么是小巧玲珑?Dapper如何工作安装需求方法参数结果常用类型 Dapper 第二篇 Execute 方法介绍描述存储过程Insert语句Update语句Delete语句 ...
- 如何高效地远程部署?自动化运维利器 Fabric 教程
关于 Python 自动化的话题,在上一篇文章中,我介绍了 Invoke 库,它是 Fabric 的最重要组件之一.Fabric 也是一个被广泛应用的自动化工具库,是不得不提的自动化运维利器,所以,本 ...
- 【题解】战争系列-截获密文I
给你一个最短代码: #include <iostream> #include <string> int main(){ std::string str; std::cin &g ...
- 2020牛客寒假算法基础集训营4 -- A : 欧几里得
A:欧几里得 考察点 : 递推, gcd 坑点 : long long 这道题题解说的十分详细,是裴波那契的一种变形,只不过换成 gcd 了. Code: #include <cstdio> ...