如何在Python中进行异常处理
作者:一只懐坏旭 发布时间:2021-02-21 06:51:01
一、抛出异常和自定义异常
Python中使用用异常对象(exception object)表示异常情况,当程序运行遇到错误后,就会触发发异常。相信大家在编码是都会遇到这种情况,那么如果异常对象并未被处理或捕捉,程序就会用报错然后终止执行。
1、raise语句
Python中的raise
关键字用于触发发一个异常,和我们熟悉的Java中的throw关键字相同,
如下所示:
>>> def ThorwErr():
>>> raise Exception("抛出一个异常")
>>> # Exception: 抛出一个异常
>>> ThorwErr()
如上raise
关键字后面是抛出是一个通用的异常类型(Exception),但是在实际编码中我们抛出的异常越详细越好。Python在exceptions
模块内建了很多的异常类型,我们用dir函数来查看exceptions中都有哪些的异常类型,
如下:
>>> import exceptions
>>> print dir(exceptions)
传递异常:
捕捉到了异常,要想重新引发它(传递异常),我们可以使用不带参数的raise语句:
>>> class MuffledCalculator:
>>> muffled = False
>>> def calc(self,expr):
>>> try:
>>> return eval(expr)
>>> except ZeroDivisionError:
>>> if self.muffled:
>>> print 'Division by zero is illegal'
>>> else:
>>> raise
2、自定义异常类型
在Python
中我们也可以定义自己的特殊异常类型,只需要继承Exception
类即可,这里的继承既可以是直接继承,也可以是间接继承。
>>> class selfExceptions(Exception):
>>> pass
二、捕捉异常
和java
中的try/catch
相似,在Python中使用try/except捕捉异常
try:
print 2/0
except ZeroDivisionError:
print '除数不能为0'
1、捕捉多个异常
使用except
语句时我们只能捕捉其后声明了的那个异常类型,如果代码可能会抛出的是其他类型的异常,这时就需要再增加一个except语句了,
如下:
try:
print 2/'0'
except ZeroDivisionError:
print '除数不能为0'
except Exception:
print '其他类型异常'
为了捕获多个异常,除了声明多个except语句之外,还可以在一个except语句之后将多个异常作为元组列出来即可:
try:
print 2/'0'
except (ZeroDivisionError,Exception):
print '发生了一个异常'
2、获取异常信息
每个异常都会有一些异常信息,我们可以把这些异常打印出来查看,便于修改代码:
try:
print 2/'0'
except (ZeroDivisionError,Exception) as e:
# unsupported operand type(s) for /: 'int' and 'str'
print e
三、finally子句
和Java
中一样,finally不管try子句内部是否有异常发生,都会执行finally
子句内的代码。一般使用时,finally常常使用用于关闭文件或者在Socket
中。
try:
print 2/'0'
except (ZeroDivisionError,Exception):
print '发生了一个异常'
finally:
print '不管是否发生异常都执行'
来源:https://blog.csdn.net/qq_45691220/article/details/123307366
猜你喜欢
- python的dict用起来很方便,可以自定义key值,并通过下标访问,示例如下:>>> d = {'key1
- 使用tkinter实现下拉多选框效果如图:1、选择一些选项2、全选选项代码如下:import tkinterfrom ComBoPicker
- 子类在多继承中使用MRO机制在Python中,当定义一个类时,可以指定它的父类。一个子类继承了其所有父类的属性和方法,并且可以添加自己特有的
- 简介 本次项目登录注册验证是对之前学习知识点的加深学习,这次项目的练习的知识点有函数、判断语句、循环语句、文件操作等。项目流程 运行代码之后
- 本文实例讲述了Python常用模块之requests模块用法。分享给大家供大家参考,具体如下:一. GET请求1.访问一个页面import
- asp fso type属性取得文件类型代码是用来返回类型指定的文件或文件夹。语法FileObject.Type FolderObject.
- 1 递归函数的特点特点一个函数 内部 调用自己函数内部可以调用其他函数,当然在函数内部也可以调用自己代码特点函数内部的 代码 是相同的,只是
- Crawler全名是DomCrawler,是Symfony框架的组件。令人发指的是DomCrawler的没有中文文档,Symfony也没有翻
- PHP mysqli_set_charset()函数设置默认客户端字符集:<?php// 假定数据库用户名:root,密码:12345
- 可匹配结构:今天~前天, 几天前, 分钟秒前等 | 2017-1-4 12:10 | 2017/1/4 12:10 | 2018年4月2日
- requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多因为是第三方库,所以使用前需要cmd安装pip in
- 这是asp利用dictionary创建二维数组的例子,这样做的优点是:1、数组下标可以是字符串2、长度不是固定的<'% ’==
- OS ( Operating System 操作系统 ) 操作系统模块;它是属于python的标准库,也就是Python自带的库;它常用于处
- 引入numpy已经能够帮助我们处理数据,能够结合matplotlib解决我们数据分析的问题,那么pandas学习的目的在什么地方呢? num
- 是否看见大站的广告都是放在内容中间实现文字环绕的呢,一般普通小站广告只能放在内容开头或者结尾,也许大站的cms系统带这个功能吧,我们小站常用
- 以用户为中心的设计、用户体验,这两个词现在在互联网上几乎随处可见,除了设计师外,很多的用户也都在说这两个词,于是我们经常会听到诸如“这里用户
- 一年一度的春运又来了,今年我自己写了个抢票脚本。使用Python+Splinter自动刷新抢票,可以成功抢到。(依赖自己的网络环境太厉害,还
- 使用python将图片改为灰度图或黑白图有三种方式,分别是是使用cv2库和PIL库来实现,详细过程如下所示。1. 使用cv2库将图片改为灰度
- 前言在Django中有大量的通用类视图,例如ListView,DetailView,CreateView,UpdateView等等,将所有重
- 导言:在前面的3章里我们为处理二进制数据添加了很多的功能。我们首先在表Categories里添加BrochurePath列,并更新了体系结构