Python异常
来源:互联网 发布:手机号码采集器软件 编辑:程序博客网 时间:2024/06/11 10:39
oxo1简介?
异常:
编写程序的时候,程序员通常需要辨别事件的正常过程和异常(非正常)情况。这类异常事件可能是错误(试图除以0),或者是不希望经常发生的事情。
怎么处理异常?
为了处理这些异常事件,可以在所有可能发生这类事件的地方都使用条件语句(比如让程序检查除法的分母是否为0)这么做可能会没效率和不灵活,而且还会让程序难以阅读。不用担心,强大的python的异常对象提供了非常强大的解决方案。
什么是异常对象?
python用异常对象(exception object)来表示异常情况。遇到错误后,会引发异常。
如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(traceback,一种错误信息)终止执行。
按自己的方式出错
raise语句
可以使用一个Exception的子类或者实例参数调用raise语句。
可以用dir(exceptions)查看内建的异常。(需要import exceptions)
可以使用dir()函数列出模块的内容自定义异常类
尽管内建的异常已经很多,但有时我们还是需要自己创建自己的异常类。
如何创建自己的异常类?像下面这样
class SomeCustomException(Exception): pass
捕捉异常
关于一场最有意思的地方,就是可以处理它们(通常叫做诱捕或者捕捉异常)
- 该功能可以使用try/except语句来实现。
如果没有捕捉到异常,它会被“传播”到调用的函数中。如果那里依然没有捕获,这写异常就会“浮”到程序的最顶层。
- 万事大吉
try /expect /else进行没有异常情况的处理。
下面是一个简单计算除法的代码:
while True: # 如果出错必须重新输入,否则无法跳出循环 try: x=input('Enter the first number: ') y=input('Enter the second number: ') print(int(x)/int(y)) except Exception as e : # 如果出错了,打印错误信息 print(e) print('Invalid input,please try again') else: # 计算过程没有异常,跳出 break
这里的循环只在没有异常的情况下才会退出(else句子中的break语句退出)
finally子句
try/except/else/finally:无论是否发生异常情况,都需要执行一些清理工作。(如通信过程)
异常和函数
faulty中产生的异常通过faulty和ignore_exception传播,最终导致了栈跟踪。
总结
异常处理并不是很复杂。如果知道某段代码可能会导致某种异常,而又不希望以堆栈跟踪的形式终止,那么就需要添加try/except和、try/finally语句(或者它们的组会)进行处理。
注意:有时候用异常会比if/else效率快。
- Python 异常
- python 异常
- python 异常
- python异常
- 【Python】异常
- python异常
- python异常
- python异常
- PYTHON-异常
- python异常
- Python 异常
- Python异常
- Python异常
- Python异常
- Python异常
- python 异常
- python 异常
- Python 异常
- 输入框中根据用户输入内容动态查询
- [JZOJ5436]【NOIP2017提高A组集训10.30】Group
- 对vue中 默认的 config/index.js:配置的详细理解 -【以及webpack配置的理解】-config配置的目的都是为了服务webpack的配置,给不同的编译条件提供配置
- linux 目录的介绍
- 面对复杂项目,如何提高设计方案的可行性
- Python异常
- 在ACE中与数据库交互的时候,利用视图和重写来读取不同数据表的字段到同一个页面上。
- 选择排序
- APUE-用fcntl函数对指定的描述符打印和开启文件标志
- 超神路之始——仿真
- ansible配置文件详解(1)
- ios开发之自定义转场动画
- Ctrlbox Project v2.3项目管理用户手册(四)——操作详解4.1
- caffe学习