我的编程空间,编程开发者的网络收藏夹
学习永远不晚

第七章 Python异常处理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

第七章  Python异常处理

什么是异常?

顾名思义,异常就是程序因为某种原因无法正常工作了,比如缩进错误、缺少软件包、环境错误、连接超时等等都会引发异常。一个健壮的程序应该把所能预知的异常都应做相应的处理,应对一些简单的异常情况,使得更好的保证程序长时间运行。即使出了问题,也可让维护者一眼看出问题所在。因此本章节讲解的就是怎么处理异常,让你的程序更加健壮。

7.1 捕捉异常语法

try...except...
try:
     expression
except [Except Type]:
     expression

7.2 异常类型

常见的异常类型:

异常类型

用途

SyntaxError语法错误
IndentationError缩进错误
TypeError  
对象类型与要求不符合
ImportError模块或包导入错误;一般路径或名称错误
KeyError
字典里面不存在的键
NameError变量不存在
IndexError下标超出序列范围
IOError输入/输出异常;一般是无法打开文件
AttributeError对象里没有属性
KeyboardInterrupt键盘接受到Ctrl+C
Exception通用的异常类型;一般会捕捉所有异常

还有一些异常类型,可以通过dir查看:

>>> import exceptions
>>> dir(exceptions)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'EnvironmentError', 'Exception', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionError', '__doc__', '__name__', '__package__']

7.3 异常处理

例如:打印一个没有定义的变量

>>> print a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

会抛出异常,提示名字没有定义。如果程序遇到这种情况,就会终止。

那我们可以这样,当没有这个变量的时候就变量赋值,否则继续操作。

>>> try:             
...   print a
... except NameError:
...   a = ""
...
>>> a
''

这样就避免了异常的发生。在开发中往往不知道什么是什么异常类型,这时就可以使用Exception类型来捕捉所有的异常:

例如:打印一个类对象里面没有的属性

>>> class A:
...   a = 1
...   b = 2
...
>>> c = A()
>>> try:
...   print c.c
... except Exception:
...   print "Error..."
...
Error...

有时也想把异常信息也打印出来,怎么做呢?

可以把错误输出保存到一个变量中,根据上面例子来:

>>> try:
...   print c.c
... except Exception, e:
...   print "Error: " + str(e)
...
Error: A instance has no attribute 'c'
# 也可以使用as关键字将错误出输出保存到变量中
>>> try:               
...   print c.c         
... except Exception as e:
...   print "Error: " + str(e)         
...
Error: A instance has no attribute 'c'

当出现的异常类型有几种可能性时,可以写多个except:

>>> try:
...   print a
... except NameError, e:
...   print "NameError: " + str(e)
... except KeyError, e:
...   print "KeyError: " + str(e)
...
NameError: name 'a' is not defined

注意:except也可以不指定异常类型,那么会忽略所有的异常类,这样做有风险的,它同样会捕捉Ctrl+C、sys.exit等的操作。所以使用except Exception更好些。

7.4 else和finally语句

7.4.1 else语句

表示如果try中的代码没有引发异常,则会执行else。

继续按照上面定义的类举例:

>>> try:    
...   print c.a
... except Exception as e:
...   print e
... else:
...   print "else..."
...
1
else...

7.4.2 finally语句

表示无论是否异常,都会执行finally。

>>> try:    
...   print c.c
... except Exception as e:
...   print e
... finally:
...   print "finally..."
...
A instance has no attribute 'c'
finally...

一般用于清理工作,比如打开一个文件,不管是否文件是否操作成功,都应该关闭文件。

7.4.3 try...except...else...finally

这是一个完整的语句,当一起使用时,使异常处理更加灵活。

#!/usr/bin/python    
# -*- coding: utf-8 -*-
try:
   print a
except Exception as e:
   print "Error: " + str(e)
else:
   print "else..."
finally: 
   print "finally..."
        
# python test.py
python test.py
Error: name 'a' is not defined
finally...

需要注意的是:它们语句的顺序必须是try...except...else...finally,否则语法错误!里面else和finally是可选的。


博客地址:http://lizhenliang.blog.51cto.com

QQ群:Shell/Python运维开发群 323779636


7.5 自定义异常类

raise语句用来手动抛出一个异常,使用方法:

raise ExceptType(ExceptInfo)

例如:抛出一个指定的异常

>>> raise NameError('test except...')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: test except...

raise参数必须是一个异常的实例或Exception子类。

上面用的Exception子类,那么我定义一个异常的实例,需要继承Exception类:

>>> class MyError(Exception):
...   def __init__(self, value):
...      self.value = value
...   def __str__(self):
...      return self.value
...
>>> raise MyError("MyError...")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
__main__.MyError: MyError...

7.6 assert语句

assert语句用于检查条件表达式是否为真,不为真则触发异常。又称断言语句。

一般用在某个条件为真才能正常工作。

>>> assert 1==1
>>> assert 1!=1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError
>>> assert range(4)==[0,1,2] 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError
# 添加异常描述信息
>>> assert 1!=1, "assert description..."
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError: assert description...


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

第七章 Python异常处理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

第七章 Python异常处理

什么是异常?顾名思义,异常就是程序因为某种原因无法正常工作了,比如缩进错误、缺少软件包、环境错误、连接超时等等都会引发异常。一个健壮的程序应该把所能预知的异常都应做相应的处理,应对一些简单的异常情况,使得更好的保证程序长时间运行。即使出了问
2023-01-31

第3章 处理异常

代码有问题时,python会显示traceback,后面跟着一条错误信息。这个错误被称为异常(exception)。 格式try: 可能产生运行时错误的代码except: 错误恢复代码测试文本Man: Is this your
2023-01-31

Python学习笔记整理(十七)异常处理

一、异常基础try/except:捕捉由代码中的异常并恢复,匹配except里面的错误,并自行except中定义的代码,后继续执行程序(发生异常后,由except捕捉到异常后,不会中断程序,继续执行try语句后面的程序)try/finall
2023-01-31

第十七章 Python网络编程

Socket简介在网络上的两个程序通过一个双向的通信连接实现数据的交换,这个链接的一端称为一个Socket(套接字),用于描述IP地址和端口。建立网络通信连接至少要一对端口号(Socket),Socket本质是编程接口(API),对TCP/
2023-01-31

异常--python异常处理

--****--python 异常处理------------------------------------------------------------------------------****DB API中定义了一些数据库操作的错
2023-01-31

Python -- 异常处理

当一个小人物冲向大时代,有多少伤害埋伏左右;      -- 北岛《城门开》当一个大梦想埋于小身体,有多少潜能冲破束缚。      -- 小Q 《梦想家》-------------------------------------------
2023-01-31

python异常处理

import re,random,tracebackkk ='不要惹怒胖子,后果自己看'p =
2023-01-31

Python 异常处理

写一个命令分发器初步要求 :程序员可以方便地注册函数到某一个命令, 用户输入命令时, 路由到注册的函数, 如果此命令没有对应的函数, 执行默认函数分析 :输入命令映射到一个函数, 并执行这个函数, 应该是cmd_tbl[cmd] = fn
2023-01-31

Python之异常处理

错误包括语法错误和逻辑错误异常是程序运行时发生错误的信号,解释器追踪程序,根据错误抛出的异常。常用的异常:AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性xIOError 输入/输出异常;基本上是
2023-01-30

Python 之异常处理

一 错误和异常•错误分两种:1、语法错误1 #!/usr/bin/env python2 # -*- coding:utf-8 -*-3 # 举列4 print('hello world' # 少)5 6 def test: # 少()
2023-01-30

python的异常处理

1.1什么是异常?异常时程序发生错误的信号,一旦程序出错机会产生一种类型的异常,1.2为什么要处理异常?为了保证程序的健壮性1.3怎么处理异常?语法错误:程序运行前就应该解决逻辑错误:try…except1.4五种异常处理语法:异常处理一:
2023-01-31

python try异常处理

错误和异常: 错误: nameerror 未声明、初始化对象 indexerror 序列中没有此索引 syntaxerror 语法错误
2023-01-31

python异常处理--try...except

在python中,用try来测试可能出现异常的语句,然后用except来处理可能出现的异常,try except的表达形式如下:try: 语句except [exception,[data...]]: Do somethingexcep
2023-01-30

python应用:异常处理

Python的错误异常在大部分IDE编辑器中则可以直接显示出来,便于开发人员的调试及修改工作,对初学者也比较友好。  Python中包含错误和异常两种情况,错误主要是常见的语法错误SyntaxError,并且在错误提示中会有倒三角箭头的修改
2023-01-30

分析Python异常处理

本篇内容主要讲解“分析Python异常处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分析Python异常处理”吧!  “你不可能总是对的”  甚至计算机也会有失误的时候。当然程序员也不例外,
2023-06-01

python3:Python 异常处理以

try …except…else 语句是处理异常公式, try 是有可能抛异常的代码块, except 抓取异常的类型, else 是指当没有抓到抛错,就运行这块代码。请看下下边的例子:try: print("抓取的有可能的代码块")
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录