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 的设计具有很强的可读性,相比其他语言 ...
随机推荐
- 关于String重写的hashcode的代码分析
public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = valu ...
- python文件下载
1. 场景描述 刚好总结Java项目的web文件下载(附方案及源码配置),想起python项目也有用到文件下载,就也介绍下吧. 2. 解决方案 使用python的第三方组件Flask来实现文件下载功能 ...
- java集合框架使用原理分析
集合是我们日常编程中可能用的很多的技术之一 使用频率极高 可能平时就会知道怎么去用 但是集合之间的关系与不同之处都不是很清楚 对它们的底层原理更甚 所以写词文章 让自己有一个更深的认识 集合是一个庞大 ...
- WinForm控件之【Button】
基本介绍 普通按钮大部分情况下用作页面对某系列操作后的提交确认,应用较为广泛,在winfrom控件当中使用设置都相对的简单. 常设置属性.事件 Image:控件上显示的图片: Enabled :指示 ...
- java面试题库(长期)
本文内容来自互联网各种面试实例,以及自己的面试经历,主要是中级开发的面试题 初中级java面试主要分为几个部分: 0.序 1.java基础 2. java多线程 3. jvm知识 4. spring等 ...
- C++ Primer 第五版 一些遇到的注意点记录。
第8章 8.2 p283 示例里有一句 ostream *old_tie = cin.tie(nullptr);//old_tie指向当前关联到cin的流 一开始不理解为什么不是无关联,查过tie() ...
- 小白开学Asp.Net Core《二》(补)
小白开学Asp.Net Core<二>(补) ——数据仓储层(Repositroy).服务层(Service) -------------------------------------- ...
- 关于C#多线程、易失域、锁的分享
一.多线程 windows系统是一个多线程的操作系统.一个程序至少有一个进程,一个进程至少有一个线程.进程是线程的容器,一个C#客户端程序开始于一个单独的线程,CLR(公共语言运行库)为该进程创建了一 ...
- 关于Servlet小总结
目录 Servlet Servlet简介 Servlet简单实现 Servlet注解 Servlet生命周期 启动时加载Servlet Servlet客户端 HTTP请求的结构 Servlet服务器 ...
- 04-kubernetes网络通信
目录 kubernetes网络通信 需要解决的问题 flannel Calico/Cannel kubernetes网络通信 需要解决的问题 同一个pod内部的不同容器间通信, local Pod间的 ...