Python基础之day10-异常
Python基础之day10-异常
文章目录
- Python基础之day10-异常
- 一、异常介绍
- 二、异常处理之捕获异常
- 三、异常处理之断言
- 四、异常处理之触发异常
- 五、自定义异常
代码仓库地址: https://gitee.com/andox_yj/python
一、异常介绍
- 错误与异常介绍
- 错误:指Python的语法错误,不能被python解析。错误使程序运行不了。
- 异常:即便Python程序的语法是正确的,在运行它的时候也有可能发生错误。运行期检测到的错误被称为异常。
- 代码示例
# ################# 错误 #################### # for in range(10):# ################# 异常 #################### num = 10 * (1 / 0) # 0 不能作为除数,触发异常 # Traceback (most recent call last): # File "<stdin>", line 1, in ? # ZeroDivisionError: division by zeronum = 4 + spam * 3 # spam 未定义,触发异常 # Traceback (most recent call last): # File "<stdin>", line 1, in ? # NameError: name 'spam' is not definednum = '2' + 2 # int 不能与 str 相加,触发异常 # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # TypeError: can only concatenate str (not "int") to str
二、异常处理之捕获异常
- try except 介绍
- 使用try except语句可以捕获异常,try except可以配合else或finally一起使用。
- try可以配合多个except一起使用。
- except 后面可以不写异常类型,既所有异常类型都执行后面代码
- 可以嵌套使用,既try里面可以嵌套try,except里面也可以嵌套一个try
- 代码示例
""" 用法:try:需要捕获异常的代码块except 异常类型1 as 异常对象1:该异常类型的处理except 异常类型2 as 异常对象2:该异常类型的处理else:出现异常且不为以上错误类型的处理finally:不管出没出现异常,最终都执行的代码 """ # ################# try except else finally #################### try:runoob() except Exception as e:print(e) # name 'runoob' is not defined else:try:with open('file.log') as file:read_data = file.read()except FileNotFoundError as fnf_error:print(fnf_error) finally:print('这句话,无论异常是否发生都会执行。') # 这句话,无论异常是否发生都会执行。
三、异常处理之断言
- assert断言介绍:当程序满足或不满足某个条件后,认为的抛出一个异常,避免等程序运行到后面的时候再报错。
- assert用法:
assert 表达式
(当条件为真时,不触发异常,当条件为假时,触发异常)# ################# assert基本使用 #################### def zero(num):assert num != 0 # 此行报错print(1 / num)zero(0)# ################# assert与try一起使用 #################### try:# 当表达式为False是,触发异常被try捕获assert 3 > 4 except:print('发生了异常')
四、异常处理之触发异常
- assert断言介绍:当程序满足或不满足某个条件后,认为的抛出一个异常,避免等程序运行到后面的时候再报错。
- assert用法:assert 表达式 (当条件为真时,不触发异常,当条件为假时,触发异常)
- 代码示例
# ################# assert基本使用 #################### def zero(num):assert num != 0print(1 / num)zero(0) # ################# assert与try一起使用 #################### try:# 当表达式为False是,触发异常被try捕获assert 3 > 4 except:print('发生了异常')
五、自定义异常
- 介绍:自定义异常就是将一个类继承于Exception类,可以定义自己的属性。然后使用raise触发这个自定义的类,既:raise 类名
- 代码示例
class ShortInputException(Exception):"""自定义的异常类,继承Exception"""def __init__(self, length, at_least):super().__init__() # 初始化父类init,这样代码不易报错self.length = lengthself.at_least = at_leasttry:# 1.输入一个字符串character = input('请输入:')# 2.如果输入的字符串长度小于3if len(character) < 3:# 3.raise引发一个定义的异常类,传入两个参数raise ShortInputException(len(character), 3) # 使用try捕获这个异常,异常类型为类名,最后as取个别名 except ShortInputException as result: # result这个变量被绑定到了错误的实例print('ShortInputException: 输入的长度是 %d,长度至少应是 %d' % (result.length, result.at_least)) else:print('没有异常发生.')
Python基础之day10-异常相关推荐
- python基础之内置异常对象
前言 什么叫异常?简单来说就是程序运行发生了预计结果之外的情况从而导致程序无法正常运行.而python解释器将一些常见的异常情况在它发生时打包成一个异常对象,我们可以通过捕捉这些异常对象从而进行处理, ...
- python基础 -文件和异常
文章目录 一.从文件中读取数据 1.读取整个文件 2.只读 3.路径 4.读操作 二.写入文件 1.写模式 2.读写模式 3.写读模式 4.修改文件内容 5.其他相关操作 三.异常 1.什么是异常 2 ...
- Python基础学习Day10
Day 10 第八章 文件操作(IO技术) 一个完整的程序一般都包括数据的存储和读取:我们在前面写的程序数据都没有进行实际的存储,因此python解释器执行完数据就消失了,实际开发中,我们经常需要从外 ...
- python打开文件报错无效序列_黑马python入门(4):python基础(序列,异常,操作文件,模块包,日志调试信息)
序列 str声明:test_str="abcedf" 也可以保留字符串里面的格式来 test_str=""" \r\n测试标题 hello world ...
- Python基础之 8. 异常、模块
1. 异常 1. 异常介绍 demo:打开一个不存在的文件123.txt,当找不到123.txt 文件时,就会抛出给我们一个IOError类型的错误,No such file or directory ...
- python基础---元组、字典、函数、文件、异常
文章目录 python基础---元组.字典.函数.文件.异常 Tuple(元组) 常用操作 dict(字典) 函数 文件 异常 python基础-元组.字典.函数.文件.异常 Tuple(元组) tu ...
- 十九. Python基础(19)--异常
十九. Python基础(19)--异常 1 ● 捕获异常 if VS异常处理: if是预防异常出现, 异常处理是处理异常出现 异常处理一般格式: try: <...............&g ...
- Python基础入门6_文件和异常
Python 基础入门前五篇: Python 基础入门–简介和环境配置 Python基础入门_2基础语法和变量类型 Python基础入门_3条件语句和迭代循环 Python基础入门_4函数 Pytho ...
- Python基础(九)--异常
Python基础(九)--异常 1 异常相关概念 1.1 什么是异常 异常是程序运行过程中产生的一种事件,该事件会打乱程序的正常流程.可以说,异常就是一种意外,指程序没有按照正常或期望的方式执行. 当 ...
- Python基础学习笔记(十三)异常
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-exceptions.html Python用异常对象(excep ...
最新文章
- 学java时的一些笔记(1)
- 【深度学习】利用神网框架分割病理切片中的癌组织(胃)
- 数据可视化组队学习:《Task04 - 文字图例尽眉目》笔记
- 函数调用 压栈的工作原理
- 智慧交通day03-车道线检测实现05:透视变换+代码实现
- Python中的特殊方法、属性和迭代器
- 从CDN到云计算,网宿科技定制化打造“双龙头”格局
- VisualStudio VC redist各版本下载链接
- 我熬夜开发了一款简约实用、支持多平台的Markdown在线编辑器(开源)
- Discriminative Locality Alignment (DLA)
- 【HDU 6411】带劲的and和 【并查集 + 二进制拆位】
- Excel锁定单元格不能修改,怎么办?
- Eggjs入门系列-基础全面讲解(完结)
- IE主页改不了怎么办
- springboot 2.x升级后出现Spring Security – There is no PasswordEncoder mapped for the id “null”的解决方案
- 明天就是七夕了,用Python做了个可能会被女朋友打死的礼物!
- 张忠谋:摩尔定律将死,物联网是“Next Big Thing”
- 死磕Java之Java核心语法
- can only concatenate str (not “NoneType“) to str
- android通知栏移除,关于android:通过滑动操作关闭应用程序时删除通知栏
热门文章
- 世卫组织健康食品排行榜:健康肉类减为三种
- 2022,陌生人社交的钱还好赚吗?
- android手机量体温,手机体温测量app
- 首提完整中台方法论,网易云全链路中台引爆产业“核聚变”升级
- wr720n改无线打印服务器,tplink如何关闭dhcp
- LINUX系统如何安装字体
- 分布java开发_java分布服务:我打赌,没人可以这么精短的讲出分布服务架构吧...
- linux常用小知识点记录
- 【页面无响应】Web页面经常无响应前端如何定位与优化(已解決)
- Springboot整合sftp、scp