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不能处理语法错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值