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,一经查实,立即删除!

相关文章

在URL参数中传递复杂对象

假设您要传递原始数据类型,例如复杂的Java对象 java.util.Data,java.lang.List,泛型类,数组以及通过URL参数所需的所有内容,以便在页面加载后在任何网页上预设默认值。 共同的任务? 是的,但是可…

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

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

CF 961E Tufurama

JYZdalao上课讲了这道题&#xff0c;觉得很好可做 其实也是一道理解了就水爆了的题目 把题意抽象化&#xff0c;可以发现题目求的满足 i<ja[i]>ja[j]>i的i&#xff0c;j对数。由于i&#xff0c;j顺序问题&#xff0c;可以在不考虑i&#xff0c;j顺序的情况下将ans>…

使用JCA的密码术–提供者中的服务

Java密码体系结构&#xff08;JCA&#xff09;是一个可扩展的框架&#xff0c;使您能够使用执行加密操作。 JCA还促进实现独立性&#xff08;程序不应该在乎谁提供加密服务&#xff09;和实现互操作性&#xff08;程序不应该与特定加密服务的特定提供者联系在一起&#xff09;。…

IE浏览器支持响应式网站设计

目前响应式网站设计比较流行, 下面是摘自百度百科有关响应式设计的定义. 响应式网站设计是一种网络页面设计布局&#xff0c;其理念是&#xff1a;集中创建页面的图片排版大小&#xff0c;可以智能地根据用户行为以及使用的设备环境进行相对应的布局。 但是, 响应式设计并不能原…

python循环for不从零开始_Python-多处理-巨大的for循环

下午好&#xff0c;我对Python还是很陌生&#xff0c;我必须解决一个需要尝试数十亿个假设的问题...更具体地说&#xff0c;我需要迭代440个元素的列表&#xff0c;但我需要这样做8次...(是的&#xff0c;我知道OS迭代的次数完全是疯狂的。我的机器相当不错&#xff0c;所以我想…

Bridge Across Islands POJ - 3608 凸多边形间最小距离/旋转卡壳

旋转的部分始终感觉有点别扭。。后来发现是因为叉积顺序为负。。 所以让三角形面积逐渐变大实际上就是让三角形面积变小&#xff08;绝对值意义上的&#xff09;&#xff0c;这样就是让高变小了。。 至于为什么要选最下和最上。。应该是为了满足两条线始终可以生成所有多边形间…

绑定到JSON和XML –处理集合

EclipseLink JAXB&#xff08;MOXy&#xff09;的优势之一是能够通过一组元数据将对象模型映射到JSON和XML。 一个弱点是您需要在JSON键或XML元素上折衷集合属性。 我很高兴地说这个问题已经在EclipseLink 2.5&#xff08;和EclipseLink 2.4.2&#xff09;中得到解决&#xff0…

【WIP】Bootstrap 基础

创建: 2017/09/28 更新: 2017/10/14 标题加上【WIP】转载于:https://www.cnblogs.com/lancgg/p/8281714.html

xml mysql 模糊查询_mybatis+Spring mysql的模糊查询问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼查询的mapping.xml语法resultType"java.lang.Integer">SELECTcount(yy_id)FROMmc_usersystem_version like CONCAT(%,${system_version },% )比如当我为字段 system_version 赋值为 ”3512“ 的时候 能查询出来若是我…

css 浮动和清除浮动

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

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

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

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

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

jq实现点击某元素之外触发事件

1 $(document).bind("click",function(e){ 2 var target $(e.target); 3 if(target.closest("#parentId").length 0){//点击id为parentId之外的地方触发 4 layer.close(tip_index); 5 type0; 6 } 7 }) …

mysql数据库连接时区设置_springboot 连接数据库之时区设置

抽空查看以前的开发日志&#xff0c;发现了一些“问题”日志&#xff0c;决定整理后陆陆续续发出来吧&#xff0c;也为有需要的话小伙伴提供点帮助。在springboot启动之时&#xff0c;报错了&#xff0c;一看应该就是连接MySql数据库时出的问题。create connection SQLExceptio…

【HTML基础】表格和表单

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

定义EJB 3.1视图(本地,远程,无接口)

这篇文章将讨论使用批注定义EJB视图的可能方法&#xff08;最后我将只提到使用EJB部署描述符&#xff09;。我将重点介绍最新的EJB 3.1视图&#xff0c;这些视图将省略旧的本地&#xff0c;远程和本地接口。 因此&#xff0c;我们可以选择&#xff1a; 远程业务界面视图&#…

小鱼的数字游戏

题目描述 小鱼最近被要求参加一个数字游戏&#xff0c;要求它把看到的一串数字&#xff08;长度不一定&#xff0c;以0结束&#xff0c;最多不超过100个&#xff0c;数字不超过2^32-1&#xff09;&#xff0c;记住了然后反着念出来(表示结束的数字0就不要念出来了)。这对小鱼的…

iview给radio按钮组件加点击事件

<RadioGroup v-model"formValidate.phone"><Radio label"phone">商家电话</Radio><Radio label"leaderPhone">负责人电话</Radio><span click"inputPhone()"><Radio label"newPhone"…

python json 不好用_Python之json使用

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