编程语言
C#编程语言基础
C#面向对象与多线程
C#数据及文件操作
JavaScript基础
JavaScript的数据类型和变量
JavaScript的运算符和表达式
JavaScript的基本流程控制
JavaScript的函数
JavaScript对象编程
JavaScript内置对象和方法
JavaScript的浏览器对象和方法
JavaScript访问HTML DOM对象
JavaScript事件驱动编程
JavaScript与CSS样式表
Ajax与PHP
ECMAScript6的新特性
Vue.js前端开发
PHP的常量与变量
PHP的数据类型与转换
PHP的运算符和优先规则
PHP程序的流程控制语句
PHP的数组操作及函数
PHP的字符串处理与函数
PHP自定义函数
PHP的常用系统函数
PHP的图像处理函数
PHP类编程
PHP的DataTime类
PHP处理XML和JSON
PHP的正则表达式
PHP文件和目录处理
PHP表单处理
PHP处理Cookie和Session
PHP文件上传和下载
PHP加密技术
PHP的Socket编程
PHP国际化编码
MySQL数据库基础
MySQL数据库函数
MySQL数据库账户管理
MySQL数据库基本操作
MySQL数据查询
MySQL存储过程和存储函数
MySQL事务处理和触发器
PHP操作MySQL数据库
数据库抽象层PDO
Smarty模板
ThinkPHP框架
Python语言基础
Python语言结构与控制
Python的函数和模块
Python的复合数据类型
Python面向对象编程
Python的文件操作
Python的异常处理
Python的绘图模块
Python的NumPy模块
Python的SciPy模块
Python的SymPy模块
Python的数据处理
Python操作数据库
Python网络编程
Python图像处理
Python机器学习
TensorFlow深度学习
Tensorflow常用函数
TensorFlow用于卷积网络
生成对抗网络GAN
Python中的异常(excaption)是指程序运行过程中出现的错误或遇到的意外情况。引发异常的原因很多,如除数为0、下标越界、文件不存在、数据类型错误、命名错误、内存空间不够等等。如果这些异常得不到有效处理,会导致程序运行终止。好的程序,要具备容错能力,在遇到异常时也能做出恰当处理。
Python提供了一套完整的异常处理方法,使程序在非正常环境仍能进行,并把错误信息转换为友好的提示呈现给最终用户。Python中的异常也是对象,可对其进行操作。所有异常都是基类Exception的成员,且都在exceptions模块中定义。Python自动将所有异常名称放在内建命名空间中,所以不必导入exceptions模块即可使用异常。一旦发生并且没有捕捉SystemExit异常,程序就会终止。
1. Exception类:
Exception类是最常用的异常类,包括StandardError、StopIteration、GeneratorExit、Warning等异常类。StandardError类是Python中的错误异常,如果程序中出现逻辑错误,则将引发该异常。StandardError是所有内联异常的基类,放置在默认的命名空间中,包含的异常有:
异常 |
描述 |
AttributeError |
属性引用、分配错误异常,如尝试访问未知的对象属性 |
AssertionError |
assert语句失败引发的异常 |
EOFError |
发现一个不期望的文件或输入结束时引发的异常 |
IndentationError |
代码缩进错误引发的异常 |
IndexError |
索引操作错误引发的异常,如使用序列中不存在的索引 |
ImportError |
导入模块时引发的异常 |
IOError |
I/O操作引发的异常,如试图打开不存在的文件 |
KeyboardInterrupt |
用户中断执行时引发,比如使用Ctrl+C快捷键 |
KeyError |
使用字典中不存在的key值引发的异常 |
MomeryError |
内存耗尽引发的异常 |
NameError |
变量名不存在引发的异常 |
NotImplementedError |
方法没有实现引发的异常 |
OSError |
os模块函数引发的异常 |
SyntaxError |
语法错误引发的异常 |
SystemExit |
Python解释器请求退出时引发 |
TabError |
空格和制表符混合使用引发的异常 |
TypeError |
使用错误类型执行运算引发的异常,如传递给函数的参数不正确 |
ValueError |
使用不合格的参数值引发的异常 |
ZeroDivisionError |
除数为0引发的异常 |
StopIteration类判断循环是否执行完毕,如果循环执行完毕则抛出该异常;GeneratorExit是由Generator函数引发的异常,当调用close()方法时触发该异常;Warning类表示程序中的代码引起的警告。
2. 异常处理:
Python中,异常会被错误自动触发,也能由代码触发和捕捉。
1)try...except捕捉异常:
程序中的异常,可以使用try...except语句来捕捉,把需要执行的代码放到try块中,而把出现异常后所要执行的代码放到except块中。当try块中的代码出现异常时,会执行except块中的代码,从而捕捉异常。格式:
try:
<要执行的程序代码>
except <异常对象1> as <异常信息标识>:
<当出现异常对象1时所示的异常要执行的代码>
except (<异常对象2, 异常对象3, 异常对象4, ...>) as <异常信息标识>:
<当出现异常对象2、异常对象3、异常对象4、...时要执行的代码>
except:
<默认的异常处理语句代码>
else:
<没有异常时执行的代码>
其中,except语句中可以有多个异常名称,一般多个异常名用小括号括起来。示例:
try:
s=1/0
except (IndexError, KeyError, ZeroDivisionError) as e:
print(e)
因为Exception是所有异常的基类,可以定义except语句中的异常类为Exception类,就可以捕捉try块中发生的所有异常。except语句中的异常默认就是Exception类。
2)else语句块:
可以在try...except语句后加入else块,当没有发生异常时会执行else块中的代码。
3)try...finally捕捉异常:
try:
<要执行的程序代码>
except:
<异常处理语句代码>
finally:
<无论是否有异常都要执行的代码>
无论try代码块中是否出现异常,都会执行finally块中的语句。实际开发中,finally块中可以进行一些清理操作,如文件关闭、断开服务器连接等。
4)raise抛出异常:
可以使用raise语句引发异常。语法格式:
raise <异常对象(提示参数)>
其中的“异常对象”表示将引发异常的名,标识了具体的异常类;提示参数用来传递异常信息,是可选的。
指定raise语句,Python会创建指定异常类的一个对象。执行了raise语句后,其后的代码将不能被执行。
3. assert语句:
使用断言语句assert可以声明断言。格式:
assert 逻辑表达式
assert 逻辑表达式, 字符串表达式
assert语句有1个或2个参数,第1个参数是一个逻辑值,如果该值为True,则什么都不做;如果该值为False,则断言不通过,抛出一个AssertionError异常。第2个参数是错误的描述,即输出的信息,可以省略。示例:
a,b=eval(input())
assert b!=0,'除数不能为0!'
c=a/b
print(a,'/',b,'=',c)
AssertionError异常可以被捕获,并在try...except语句中进行处理。
4. 自定义异常:
Python允许自定义异常类,用于描述Python中没有涉及的异常情况。自定义异常必须继承Exception类,按命名规范以Error结尾,自定义异常可以使用raise语句引发,而且只能通过手工方式触发。语法:
class exceptionName(baseException):pass
异常类通常直接或间接从Exception类派生。