异常处理python 空气质量问题_python的异常处理

异常处理

什么是异常?

首先要清楚,什么是异常,异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下

07fe2f54f2fd09b0ecc6ac0657a237e9.png

异常是由错误触发的,那么错误有哪些情况呢?

1.语法错误:

#语法错误示范一else#语法错误示范二def test: pass#语法错误示范三class Cal pass#语法错误示范四print(hello1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正)View Code

2.逻辑错误

# res=1/0# l=[1,2]# l[10]# age=input('>>: ')# age=int(age)# res=1/0# l=[]# l[10000]# dic={}# dic['name']# class Foo:# pass# Foo.x2.逻辑错误示范View Code

异常的种类

在平时编码过程中,常见的异常有以下这些:

AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性xIOError 输入/输出异常;基本上是无法打开文件ImportError 无法引入模块或包;基本上是路径问题或名称错误IndentationError 语法错误(的子类) ;代码没有正确对齐IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]KeyError 试图访问字典里不存在的键KeyboardInterrupt Ctrl+C被按下NameError 使用一个还未被赋予对象的变量SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)TypeError 传入对象类型与要求的不符合UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它ValueError 传入一个调用者不期望的值,即使值的类型是正确的

当然,还有其他异常,这里就不做过多演示。出现异常,我们肯定想到要处理,不然程序就直接报错崩溃了。其实我们一直在处理异常,只是没有发现,比如要判断你输入的内容是不是数字,我们以前是这么判断的:

age = input('请输入你的年龄: ').strip()if age.isdigit(): int(age) #这是主逻辑elif age.isspace(): print('输入的是空格!')elif len(age) == 0 : print('没有输入内容')else: print('其他异常!')>>>请输入你的年龄: dasdasf>>>其他异常!

在这里if就是在处理异常,但是,如果我还有其他程序也要运行,那就要写成这样了:

age = input('请输入你的年龄: ').strip()if age.isdigit(): int(age) #这是主逻辑elif age.isspace(): print('输入的是空格!')elif len(age) == 0 : print('没有输入内容')else: print('其他异常!') num = input('请输入你的编号: ').strip()if num.isdigit(): int(num) #这是主逻辑elif num.isspace(): print('输入的是空格!')elif len(num) == 0 : print('没有输入内容')else: print('其他异常!')View Code

这时候,你会发现,程序写的很长,可读性差,如果有十个这样的输入,那这个程序就没法看了,这时候,python提供了一种异常处理的方法try...except...

part1 基本语法

try: 被执行的逻辑except 异常名称: 如果try中的逻辑出现异常,就执行这段逻辑

现在用这套方法来处理上面的异常,看看效果怎么样:

try: age = input('请输入你的年龄: ').strip() int(age) num = input('请输入你的编号: ').strip() int(num)except ValueError as e: #根据报错知道错误类型是ValueError print(e)>>>请输入你的年龄: 23>>>请输入你的编号: dwqd>>>invalid literal for int() with base 10: 'dwqd'View Code

这样一看代码简洁了很多啊,效果很完美

part2 异常只能用来处理指定的异常情况,其他情况不会处理

我们可以试一下,把错误类型改成别的,看看会怎样:

try: age = input('请输入你的年龄: ').strip() int(age) num = input('请输入你的编号: ').strip() int(num)except IndexError as e:  print(e)>>>请输入你的年龄: ffqTraceback (most recent call last): File "C:/Users/pengfy/PycharmProjects/untitled/错误与异常/错误与异常.py

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键

//获取屏幕尺寸,不包括虚拟功能高度 getWindowManager().getDefaultDisplay().getHeight();获取屏幕原始尺寸高度,包括虚拟功能键高度, private int getDpi(){ int dpi 0;Display display getWindowManager().getDefaultDisplay();Displa…

cad小插件文字刷_文字狗最佳排版神器 小恐龙公文排版助手Office WPS插件

文字狗最佳排版神器文字狗最佳排版神器 小恐龙公文排版助手Office WPS插件1.85最新版 无需注册、无需其他费用、无广告。相信大家所需要提交的各种论文、报告等Word文档都对格式有着非常严格的要求,对标题、目录、正文都有不同的要求。尤其是对于公文,要…

Java中的对象、private关键字、this关键字、构造方法

面向对象 概述:Java一种面向对象的程序设计语言,面向对象思想是一种程序设计思想,在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。 …

2060显卡驱动最新版本_教程:怎么安装更新NVIDIAAMD显卡驱动?

PART-1:装驱动这么简单的事情真的需要写教程吗?我自己都理解不了我为什么要写这样一个教程,但是如你所见,他确实被我写出来了,而且对大部分人都挺有用。首先,使用鲁大师以及驱动精灵这类软件的同学自己喜欢就好&#x…

C语言实现泛型编程

http://www.cnblogs.com/archimedes/p/c-general-function1.html转载于:https://www.cnblogs.com/LittleTiger/p/3980416.html

中电福富外包offer要等多久_记一次外包经历

开题,我是知道外包很坑的,无论从待遇,体验,未来职业发展,那都是非常负面的。最近随家人(二孩都需要照顾)搬到弱二线城市,想找个开发岗,招聘网上基本都被外包包场了&#…

mysql 两个时间相差大于24小时的数据_MySQL 主从同步延迟的原因及解决办法(仅学习)...

原文链接:https://blog.csdn.net/hao_yunfeng/article/details/82392261Mysql主从基本原理,主要形式以及主从同步延迟原理 (读写分离)导致主库从库数据不一致问题的及解决方案 一、主从数据库的区别 从数据库(Slave)是主数据库的备份,当主数据…

分形之万花筒

万花筒是一种光学玩具,只要往筒眼里一看,就会出现一朵美丽的“花”样。将它稍微转一下,又会出现另一种花的图案。不断地转,图案也在不断变化,所以叫“万花筒”。万花筒的图案是靠玻璃镜子反射而成的。它是由三面相交成…

java中常用API、Scanner类、匿名对象、Random类、ArrayList类、对象数组

java中常用API: API:Application Programming Interface,应用程序编程接口。Java API是JDK中提供给我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要知道如何使用…

数字图像处理课设图像的锐化_数字图像处理图像锐化处理.ppt

数字图像处理图像锐化处理4.7.2 灰度级到彩色转换 灰度级到彩色转换(例) 在HSI彩色空间的直方图均衡强度均衡处理没有改变图像的色调和饱和度值,但它的确影响了整体图像的彩色感观。 向量分量可以用传统的灰度邻域处理单独地平滑RGB图像的每一平面得到。 用拉普拉斯…

Java中String类、字符串常量池、字符串常用方法

String类: String代表字符串类,java中所有双引号中的内容都称为字符串,如:“hello”。字符串是不可改变的,因此字符串是可以共享使用的,相当于char字符数组,但是底层原理是byte字节数组。 创建…

mysql同步数据到另一张表_mysql:Otter跨机房数据同步(单向)

重要说明:需要同步的表必须要有主键 主键 主键otter是一款基于Java且免费、开源基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库的解决方案。Otter目前支持了什么1. 单向同步, mysql/oracle互相同步2. 双向同步&am…

04day1

无穷的数列 找规律 【问题描述】 有一个无穷序列如下: 110100100010000100000… 请你找出这个无穷序列中指定位置上的数字。 【输入】 第一行一个正整数 N,表示询问次数;接下来的 N 行每行一个正整数 Ai,Ai 表示在序列中的位置。 …

arraylist扩容是创建新数组吗 java_Java编程之数组扩容

一、背景数组在实际的系统开发中用的越来越少了,我们只有在阅读某些开源项目时才会看到数组的使用。在Java中,数组与List、Set、Map等集合类相比,后者使用起来方便,但是在基本数据类型处理方面,数组还是占优势的&#…

【转】Eclipse+CDT+Gcc编译选项控制

原文地址:http://www.oschina.net/question/4873_19441 如果我们的程序调用动态链接库,当在cdt中运行的时候,可以通过run-->enviroment-->添加LD_LIBRARY_PATH 环境变量来设置查找动态链接库文件的路径。但是在运行的时候,程…

apt ubuntu 指定ipv4_macOS 下使用 Docker 搭建 ubuntu 环境

学习网络开发过程中不想“污染”macOS,考虑到之后部署网络应用主要是与linux打交道,所以安装了 ubuntu 虚拟机以满足短期的知识学习需求。十里安装了 ubuntu 虚拟机,一般就是在 mac 中 ssh 连接 ubuntu 虚拟机在终端下进行操作学习&#xff0…

java中static关键字简介

static静态关键字: static关键字可以修饰成员变量和成员方法,被修饰的成员是属于类的,而不是简简单单的属于某个对象,也就是说可以不用通过对象调用,而是通过类直接调用。 类变量(静态变量)&a…

[WCF编程]10.操作:回调操作

一、回调操作概述 WCF支持服务将调用返回给它的客户端。在回调期间,许多方面都将颠倒过来:服务将成为客户端,客户端将编程服务。回调操作可以用在各种场景和应用程序中,但在涉及事件或者服务发生时间需要通知客户端时,…

float去掉小数点之后_float类型的存储方式

在c语言中float函数是单精度的。它在内存中以二进制的形式存储。分为符号位,阶码与尾数三部分。 符号位最为简单,如果你存储的是正数那么符号数就是0。如果是负数,则为1。下面,我以13.625为例说明阶码与尾数的表示方法。首先&…