python print error 空_python笔记37:10分钟掌握异常处理,再也不担心程序挂了

主要内容:

  • 小目标:异常处理
  • 主要内容:错误与异常,try_except语句

对于撸代码的程序员来说,程序运行中出现问题是常见的现象;

实际学习与工作中,我们会花很大的精力去解决各种问题;

1. 程序中问题:

Python中出现问题,主要分为下面几种:

代码编写问题,比如:语法错误;

程序运行时异常,比如:除0错误,序列越界错误;

计算机硬件错误,比如:磁盘损坏,网络异常等;

程序逻辑问题,比如:死循环,算法问题等;

如何解决以上问题:

语法问题,python解释器会检查;

程序运行时异常,程序直接停止运行,并报出异常;

硬件问题:检查硬件

逻辑问题:通过单步调试或者print信息通过代码检查;

这里我们主要讲解程序运行时异常。

2. 语法问题:

常见语法错误:

  • 例1:
if a > 10    pass

结果:

  File "", line 1    if a > 10             ^SyntaxError: invalid syntax

分析:python解释器输出信息,第一行,语法错误;

  • 例2:
a = 10if a > 10: pass    pass

结果:

File "", line 4    pass    ^IndentationError: unexpected indent

分析:缩进问题;

3. 常见异常:

例1:

if b > 10:    pass

结果,变量b没有定义:

NameError                                 Traceback (most recent call last) in ----> 1 if b > 10:      2     passNameError: name 'b' is not defined

例2:

int('c')

结果,字符串转整数错误:

ValueError                                Traceback (most recent call last) in ----> 1 int('c')ValueError: invalid literal for int() with base 10: 'c'
  • 分析:

遇到异常问题,查看解释器报错;

找到问题所在行,分析并解决问题;

问题:某些情况下程序出现异常,

我们并不希望程序终止运行:例如:

网络抖动,希望重试几次;

数据库查找异常,可以跳过继续查找;

读取配置文件,IO错误,可以使用默认配置....

4. 异常处理

4.1 try/except语句

Python中可以使用try/except解惑处理异常,例如:

try:    if b > 10:        pass    print("run here 1")except Exception as e:    print("Error:", e)print("run here 2")

结果:

Error: name 'b' is not defined

从结果中可以看到,程序并没有因为变量b没有定义而停止运行

  • 分析:

try/except用来处理异常;

若程序没有异常,执行完try中的代码段;

若程序在try代码段出现异常,try语句截获异常,停止当前代码段执行,去执行except中代码

问题:如何只处理指定异常?

4.2 except:

except后面可以添加为指定异常类型;

常见的异常类型:

665b663f8ab1de5169eef865608cd586.png

常见异常

下面我们指定异常:

try:    if b > 10:        pass    print("run here 1")except IOError as e:    print("Error:", e)print("run here 2")

结果:异常处理并未生效

程序中设置捕获异常为:IOError;

程序中触发异常为NameError,try/except并不对此异常进行处理;

对比:Exception为异常基类,可以捕获所有异常;

1 try:----> 2     if b > 10:      3         pass      4     print("run here 1")      5 except IOError as e:NameError: name 'b' is not defined

4.3 try/except设置捕获多个异常:

使用多个except指定异常,直接上代码:

try:    if b > 10:        pass    print("run here 1")except IOError as e:    print("IOError:", e)except NameError as e:    print("NameError:", e)print("run here 2")

结果,捕获到了NameError:

NameError: name 'b' is not definedrun here 2

4.4 不能处理的错误:

例如,语法错误

try:    if b>10        passexcept Exception as e:    pass

结果:Python解释器首先检查语法问题,程序尚未运行,所以不能处理语法错误:

if b>10           ^SyntaxError: invalid syntax

4.5 try/finally

基本语法:

try:    passexcept:    passfinally:    pass

程序是否遇到异常,都会执行finally语句,一般finally中用于释放资源;

  • 例1:程序中无异常
try:    b = 20    if b>10:        passexcept Exception as e:        print("Error:", e)finally:    print("finally")

结果:finally

  • 例2:程序中出现异常
try:    if d>10:        passexcept Exception as e:        print("Error:", e)finally:    print("finally")

结果:

Error: name 'd' is not definedfinally

以上就是Python中异常处理方式。

总结:

理解错误与异常;

掌握try/except/finally语句;

try/except不能处理语法错误

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

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

相关文章

contenteditable元素的placeholder输入提示语设置

在某些情况下,textarea是不够用的,我们还需要显示一些图标或者高亮元素,这就需要用富文本编辑器,而富文本编辑器本质上是HTML元素设置了contenteditable。 然后可能需要像input、textarea有placeholder的输入提示语,但…

css 浮动和清除浮动

在写页面布局的过程中,浮动是大家经常用的属性。在好多的排版布局中都是用的的浮动比如说下面这些地方都是应用到了浮动。 在我学习浮动的时候可是熬坏了脑筋,在这里我分享一下我对浮动这块知识的总结。 一、浮动的定义 使元素脱离文档流,按…

Java Code Geeks和Packt提供的Hadoop书籍赠品

亲爱的极客,由于参与度很高,并且为了有机会赢得尽可能多的Hadoop粉丝,我们决定将竞赛延长一个星期,直到下周二。 各位极客, 赠品在Java Code Geeks上继续。 我们很高兴地宣布,我们再次与Packt Publishin…

【转】 差分约束系统详解(转化为最短路) (概念)

---恢复内容开始--- 转自:http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 差分约束系统中: 如果求未知数的最大值,那么按小于等于建图后求最短路即可。(因为求最短路是由无穷向下约束而得到的,所以得到…

【HTML基础】表格和表单

本次博客的主要内容如下: meta和link表格表单 meta和link meta meta的属性有两种:name和http-equiv。 name属性主要用于描述网页内容,对应与网页内容。 1.关键字,当搜索引擎在爬取内容的时候,会根据关键字判断&a…

python json 不好用_Python之json使用

一、概念json是一种通用的数据类型,任何语言都认识接口返回的数据类型都是json长得像字典,形式也是k-v { }其实json是字符串字符串不能用key、value来取值,要先转成字典才可以格式如下:{"error_code": 0,#要使用双引号&…

jstack命令(Java Stack Trace)

转:http://blog.csdn.net/fenglibing/article/details/6411940 JDK内置工具使用 一、javah命令(C Header and Stub File Generator) 二、jps命令(Java Virtual Machine Process Status Tool) 三、jstack命令(Java Stack Trace) 四、jstat命令(Java Virtual Machine …

链式存储mysql_链栈:栈的链式存储结构

前面讲完了栈的顺序存储结构,我们现在来看看栈的链式存储结构,简称为链栈。链栈是没有附加头结点的运算受限的单链表。栈顶指针就是链表的头指针。栈是用栈顶来做插入和删除操作,那么对于链栈的栈顶放在链表的头部还是尾部呢?单链…

树状数组 学习笔记

树状数组可以用来求区间元素的和。与前缀和做法不同,它支持值的修改。比如说,现在我有一个数列a,要求你维护这个数列,使其支持两个操作。1.改变数列第k项的值2.查询从第i项到第j项的总值暴力做法总是过不了所有点的,如…

iOS动画-从UIView到Core Animation

首先,介绍一下UIView相关的动画。 UIView普通动画:[UIView beginAnimations: context:];[UIView commitAnimations]; 动画属性设置: 1 //动画持续时间2 [UIView setAnimationDuration:(NSTimeInterval)];3 //动画的代理对象4 …

201621123055《JAVA程序设计》第三周学习总结

1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词。 答:类、对象、关键字等。1.2 用思维导图或者Onenote或其他工具将这些关键词组织起来。(注:首次使用,不太会用软件) 2. 书面作业 1.以面向对象方式改造数据结构…

通过运行示例从WSO2 ESB开始

我最近加入了一个新任务,在该任务中,我们必须基于WSO2工具栈实施ESB解决方案。 尽管我熟悉ESB的大多数概念以及其他一些实现(例如Mule ESB ),但这是我第一次必须使用WSO2 ESB 。 幸运的是,可以找到很多文档…

爬虫(十二):scrapy中spiders的用法

Spider类定义了如何爬去某个网站,包括爬取的动作以及如何从网页内容中提取结构化的数据,总的来说spider就是定义爬取的动作以及分析某个网页 工作流程分析 以初始的URL初始化Request,并设置回调函数,当该request下载完毕并返回时&…

position:fixed 兼容浏览器低版本

项目中遇到的坑,写篇博客做个笔记纪念下,position: fixed一般来说都兼容各个浏览器,但是要兼容浏览低版本问题,就得用-webkit-transform: translateZ(0);这段代码了。 项目中用到position: fixed;z-index: xxx;的时候,…

监控java_Java应用程序监控JavaMelody

JavaMelody是运行在Java Web容器中,用来监控Java内存和J服务器CPU使用情况,用户Session数量,JDBC连接数,和http请求、sql请求等的执行数量,平均执行时间,错误百分比等。图表可以按天,周&#xf…

【谈谈IO】BIO、NIO和AIO

BIO: BIO是阻塞IO,体现在一个线程调用IO的时候,会挂起等待,然后Thread会进入blocked状态;这样线程资源就会被闲置,造成资源浪费,通常一个系统线程数是有限的,而且,Thread进入内核态也…

css动画-模拟正余弦曲线

今天就写一个css3抛物线的动画吧 从左到右的抛物线动画,我们就暂且把动作分为匀速向右运动和变速的上下运动。 水平匀速运动我们可以利用 translateX(x):定义 2D 转换,沿着 X 轴移动元素;以及linear:动画从头到尾的速…

java list 循环赋值_Java List集合的坑(add方法报空指针,循环赋值时list已保存的值会改变)...

先看空指针异常&#xff1a;ListmovieInfos null;这样创建时&#xff0c;list指向为空&#xff0c;修改方法&#xff1a;ListmovieInfos new ArrayList();再看list循环赋值的问题&#xff1a;问题描述&#xff1a;for (i0;i<10;i){movieInfoSum.movieId (int)recommendatio…

ros使用时的注意事项技巧

1.rosrun package-name executable-name 比如 rosrun turtlesim turtlesim_node 2.一旦启动roscore后,便可以运行ROS程序了。ROS程序的运行实例被称为节点(node)&#xff0c;roscore叫做节点管理器 3.查看节点列表rosnode list 4.需要注意节点名并不一定与对应可执行文件名称相…

Ubuntu+vscode打不开

前沿: vscode链接参考链接 问题: 之前在Ubuntu上安装chrome, 结果chrome没装成功, 还把vscode给qiu坏了, 貌似是当时安装chrome时提示要升级一个包. 后来发现当时是修改了libnss这个包的版本: 解决方法: # 将libnss给downgrade一下就OK了. sudo apt install libnss32:3.21-1ubu…