异常处理

什么是异常?

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

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

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

异常处理python 空气质量问题_python的异常处理相关推荐

  1. python空气质量分析与预测_python 空气质量AQI数据分析与预测 ---分析,相关系数矩阵...

    版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/YmeBtc/article/details ...

  2. python 空气质量AQI数据分析与预测 ---分析(空气质量排名,临海城市空气质量是否优于内陆城市)

    #每天一点点# python 空气质量AQI数据分析与预测 点击可以查看 分析:用到的库,数据集,数据清洗 点击可以查看 分析:相关系数矩阵 #四:数据分析 #1:空气质量最好/最差的5个城市 #最好 ...

  3. python空气质量分析报告_Python数据可视化:2018年北上广深空气质量分析

    原标题:Python数据可视化:2018年北上广深空气质量分析 作者:法纳斯特,Python爱好者,专注爬虫,数据分析及可视化 就在这周偶然看到一个学弟吐槽天津的空气,不禁想起那段厚德载雾,自强不吸的 ...

  4. python中异常处理的两种方式_Python 之异常处理

    一 错误和异常 •错误分两种: 1.语法错误 1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 #举列 4 print('hello world' # ...

  5. python写空气质量提醒_Python数据可视化:2018年空气质量分析

    就在本周,我碰巧看到一个学生抱怨天津的空气,我不禁思考的日子他是如此善良的和完善的.没有真相,就无图下面的图片证据.左边的图片是去年2月份.这样的空气真是少见!右边的是Tucao和我第一次买一个口罩! ...

  6. python空气质量指数计算_Python入门案例(八):空气质量指数(AQI)计算

    一.空气质量指数计算V1.0 主要知识点:分支结构.函数.异常处理# -*- coding:utf-8 -*- """ @author:Angel @file:AQI_V ...

  7. python空气质量分析与预测_干货!如何用 Python+KNN 算法实现城市空气质量分析与预测?...

    原标题:干货!如何用 Python+KNN 算法实现城市空气质量分析与预测? 作者 | 李秋键 责编 | 伍杏玲 封图 | CSDN 付费下载自东方 IC 出品 | CSDN(ID:CSDNnews) ...

  8. python123空气质量提醒_Python制作提取指定站点的空气质量数据监控脚本

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于Python干货铺子 ,作者INUYASHA123 前言 对于我们下载的多数数据集, ...

  9. python空气质量指数计算_Python的学习笔记案例8--空气质量指数计算5.0

    之前都是使用提前准备好的文件来获取数据,时效性很差. 为了更有效.更快地获取并利用网络信息并工作提高效率,出现了网络爬虫. 利用网络爬虫实时获取城市的空气质量指数. 什么是网络爬虫? 自动抓取互联网信 ...

最新文章

  1. 机器学习(MACHINE LEARNING) 【周志华版-”西瓜书“-笔记】 DAY9-聚类
  2. 转载:python pyppeteer手动、离线安装 chromium
  3. [Python从零到壹] 十一.数据分析之Numpy、Pandas、Matplotlib和Sklearn入门知识万字详解(1)
  4. org.apache.catalina.LifecycleException: Failed to
  5. adblock去除烦人的广告
  6. 今天的圆圆的深圳4j
  7. mysql mvc javascript_MVC中用Jquery、JS和Ajax 实现分页 存储过程是用mysql写的。
  8. 国货如此畸形,改革30年无国际品牌
  9. JAVA加载一个目录下有依赖关系本地库的通用代码
  10. postman实现接口请求
  11. 根据身份证号码计算年龄和判断性别
  12. 计算机绘图课程选用课本,机械制图与计算机绘图 机械制图与计算机绘图 机械制图与计算机绘图课程标准.doc...
  13. android inflate,Android LayoutInflater inflate() 图示详解
  14. java中线程池的实现原理:七参、四策
  15. Ethereum Yellow Paper
  16. z5s+android+4.4,中兴NX403a(Nubia Z5S Mini Android 4.4)刷Recovery教程
  17. python和c++同时订阅两个话题,在一个回调函数中处理
  18. [论文阅读笔记30]关于pico抽取的研究-1(4篇文献)
  19. linux新建挂载目录命令,告诉你Ubuntu添加新分区并设置挂载点的方法及命令
  20. 关于 js bin 的运用

热门文章

  1. Eclipse编辑器字体大小的设置
  2. MySql数据库驱动类
  3. android jackson 解析json字符串,android:json解析的两个工具:Gson和Jackson的使用小样例...
  4. python画环形图_用Python把图做的好看点:用Matplotlib画个环形图
  5. Python数模笔记-模拟退火算法(3)整数规划问题
  6. oracle格式化列宽度,ORACLE日期时间的格式化参数大全
  7. dataframe 如何选中某列的一行_带你领略pandas中多表之间如何处理
  8. Php获取id并提交表单,提交表单后 PHP获取提交内容的实现方法
  9. 『TensorFlow』模型保存和载入方法汇总
  10. 2.6 子窗口赋值给父窗口并关闭子窗口 我的程序猿之路:第十六章