Python入门基础(10)_异常_1
最近有点忙,到现在快一个月没写了,罪过罪过,继续学习
异常:python程序在运行时,如果python解释器遇到一个错误,那么程序就会停止执行,并且会提示一些错误信息,这就是异常.
抛出异常:程序停止执行并提示错误信息的动作就是抛出异常.
比如下面这个例子:
num=int(input("请输入一个数字:"))
print("报错了吧!弟弟")
如果我输入的是一个正确的数字,那么会得到下面的结果:
请输入一个数字:1
报错了吧!弟弟
但是如果我输入非数字,将会得到下面的结果:
请输入一个数字:A
Traceback (most recent call last):
File "C:/Users/users/PycharmProjects/study/zixue_good/socket_py/raise_study.py", line 1, in <module>
num=int(input("请输入一个数字:"))
ValueError: invalid literal for int() with base 10: 'A'
你会发现程序不止发生错误,就连我的"报错了吧!弟弟"都没有输出来.在程序的开发过程中,很多代码我们是不能确定是否正确;也就是说,在某些代码里面可能会存在异常(如果你是大佬,毫无错误,当我没说过),这时候,我们就需要捕获异常.
1.捕获异常
捕获异常的语法:
try:
尝试执行的代码(可能有错误的代码块)
except:
出现错误的处理(try里面的代码出现错误之后给点提示)
继续看上面的那个例子,现在代码改写成这样了:
try:
num=int(input("请输入一个数字:"))
except:
print("输入数字啊!猪")
print("报错了吧!弟弟")
输入一个正确的数字,except里面的代码并不会执行,因为我的try里面并没有错误:
请输入一个数字:1
报错了吧!弟弟
如果我输入一个非数字的字符,try里面出现错误,except就会执行,后面的print也会继续执行:
请输入一个数字:啊
输入数字啊!猪
报错了吧!弟弟
2.错误类型捕获
程序在执行的过程中,会有各种各样的类型错误,比如(
BaseException | 所有异常的基类 |
SystemExit | 解释器请求退出 |
KeyboardInterrupt | 用户中断执行(通常是输入^C) |
Exception | 常规错误的基类 |
)这些类型错误,还有很多种类型错误,感兴趣的可以去菜鸟教程看一下,这里就不一一列举了.语法如下:
try:
#尝试执行的代码块
pass
except 错误类型1:
#针对错误类型1,对应的代码处理;
except (错误类型2,错误类型3):
#针对错误类型2和3,对应的代码处理;
except Exception as result:
print("未知错误%s"%result)
举个例子吧:
try:
num = int(input("请输入整数:"))
result = 8 / num
print(result)
except ValueError:
print("请输入正确的整数")
except ZeroDivisionError:
print("除 0 错误")
当我执行了上面的代码之后呢
如果我输入的是非数字字符,就会得到如下结果:
请输入整数:啊
请输入正确的整数 如果我输入0,就会得到如下结果:
请输入整数:0
除 0 错误 如果我输入正确的数字,就会得到如下结果:
请输入整数:2
4.0
但是在实际开发中,为了能够处理复杂的异常情况我们通常会使用下面这种写法:
try:
# 尝试执行的代码
pass
except 错误类型1:
# 针对错误类型1,对应的代码处理
pass
except 错误类型2:
# 针对错误类型2,对应的代码处理
pass
except (错误类型3, 错误类型4):
# 针对错误类型3 和 4,对应的代码处理
pass except
Exception as result:
# 打印错误信息
print(result)
else:
# 没有异常才会执行的代码
pass
finally:
# 无论是否有异常,都会执行的代码
print("无论是否有异常,都会执行的代码")
else 只有在没有异常时才会执行的代码
finally 无论是否有异常,都会执行的代码
try:
num = int(input("请输入整数:"))
result = 8 / num
print(result)
except ValueError:
print("请输入正确的整数")
except ZeroDivisionError:
print("除 0 错误")
except Exception as result:
print("未知错误 %s" % result)
else:
print("正常执行")
finally:
print("执行完成,但是不保证正确")
上面例子执行之后得到如下输出结果:
请输入整数:4
2.0
正常执行
执行完成,但是不保证正确
Python入门基础(10)_异常_1的更多相关文章
- Python 入门基础10 --函数基础3 函数对象、名称空间、装饰器
今日内容 1.函数对象 2.名称空间与作用域 3.函数的嵌套调用与闭包 4.装饰器 一.函数对象 1.1 定义 函数名存放的就是函数地址,所以函数名也就是对象,称之为函数对象 1.2 函数对象的应用 ...
- Python入门基础学习 三
Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...
- Python 入门基础6 --字符编码、文件操作1
今日内容: 1.字符编码 2.字符与字节 3.文件操作 一.字符编码 了解: cpu:将数据渲染给用户 内存:临时存放数据,断电消失 硬盘:永久存放数据,断电后不消失 1.1 什么是编码? 人类能够识 ...
- 万门大学Python零基础10天进阶班视频教程
点击了解更多Python课程>>> 万门大学Python零基础10天进阶班视频教程 课程简介: 旨在通过两周的学习,让学生不仅能掌握python编程基础从而进行计算机程序的开发, 还 ...
- python入门(10)使用List和tuple
python入门(10)使用List和tuple list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可 ...
- Python入门基础学习 二
Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...
- Python入门基础学习 一
Python入门基础学习 一 Python下载及安装 下载地址:https://www.python.org/,选择最新的版本下载 稍等一会,安装完成. 简单语句 从idle启动Python:IDLE ...
- python入门基础
Python 入门 变量 什么是变量?变量就是变化的量,核心是"变"和"量"两个字,变就是变化,量就是衡量状态. 为什么需要变量?程序执行的本质就是一系列状态的 ...
- Python入门 ---基础知识
Python入门不知道这些你还是承早放弃吧!真的 Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言 ...
随机推荐
- Android native进程间通信实例-socket本地通信篇之——服务端进程异常退出解决办法
导读: 好难受啊,为什么服务端说挂就挂,明明只是客户端关闭而已,服务端怎么能挂呢? 想想,如果手机上使用一个聊天程序的时候,手机端关闭了聊天程序,那么远端服务器程序总不能说挂就挂吧!所以一定要查明真相 ...
- git rebase VS git merge? 更优雅的 git 合并方式值得拥有
写在前面 如果你不能很好的应用 Git,那么这里为你提供一个非常棒的 Git 在线练习工具 Git Online ,你可以更直观的看到你所使用的命令会产生什么效果 另外,你在使用 Git 合并分支时只 ...
- centos 7 安装docker,conflicts 异常
[root@localhost html]# yum install docker-io 已加载插件:fastestmirror, langpacks Loading mirror speeds fr ...
- .NET多线程之线程安全,Lock(锁)、Monitor(同步访问)、LazyInitializer(延迟初始化)、Interlocked(原子操作)、static(静态)构造函数、volatile、
1.什么是线程安全 线程安全是编程中的术语,指某个函数.函数库在多线程环境中被调用时,能够正确地处理多个线程之间的共享变量,使程序功能正确完成.一般来说,线程安全的函数应该为每个调用它的线程分配专门的 ...
- Spring Boot微服务电商项目开发实战 --- 基础配置及搭建
根据SpringBoot实现分布式微服务项目近两年的开发经验,今天决定开始做SpringBoot实现分布式微服务项目的系列文章,帮助其他正在使用或计划使用SringBoot开发的小伙伴们.本次系列文章 ...
- springcloud入门系列
关于springcloud 1.写在前面 写着写这,不知不觉springcloud写了7,8篇了,今天把文章分下类,写下感受及后面的计划吧. (1)springcloud中最最重要的是eureka注册 ...
- [leetcode] 87. Scramble String (Hard)
题意: 判断两个字符串是否互为Scramble字符串,而互为Scramble字符串的定义: 字符串看作是父节点,从字符串某一处切开,生成的两个子串分别是父串的左右子树,再对切开生成的两个子串继续切开, ...
- [git] 基础命令笔记
--内容整理自廖雪峰的GIT教程-- git status 查看当前工作区状态,显示未跟踪的文件以及未上传的修改记录 git init 使当前文件夹变成Git可以管理的仓库 git add xxx 将 ...
- Flask项目常见面试问题
一.你的项目中缓存粒度是如何选择的? 缓存粒度一共分为4种. 1.缓存某个数值:一个键只保存一个值,性价比较低,使用率低,如果存储的话我们使用redis的String 2.缓存数据对象:数据库记录对应 ...
- css关于flex布局下不能实现text-overflow: ellipsis的解决办法
摘录自 https://segmentfault.com/q/1010000011115918