python 异常处理小结 try except raise assert
1.try-except
try except组合是用来处理异常的一对黄金搭档,python中也不例外。可以看个简单的例子:
def t1():try:a, b = 1.0, "2.0"c = a / float(b)print("c is: ", c)except ValueError as err:print("b must be digit!")except ZeroDivisionError as err:print("b is zero!")except Exception as ex:print("there is unexpect exception!")
上面两个数相除的例子,首先,如果b的值是"abc",会抛出一个ValueError的异常:could not convert string to float: 'abc'
,该异常被except ValueError as err
捕获。其次,如果b的值是"0.0",会抛出一个ZeroDivisionError的异常:ZeroDivisionError: float division by zero
,该异常被except ZeroDivisionError as err:
捕获。最后,如果还有其他异常,则被最后一句except语句捕获。
2.raise
上面的例子中,都是被动接受处理异常。自然我们也可以主动抛出异常,这个时候就用到了raise关键字。
相比被动接受处理异常,主动抛出异常的好处自然很多。
1.使用方式更为灵活,可以根据我们的业务场景,业务需求,来定义虽然代码语法上准确无误,但不满足我们要求的情况为异常情况。
2.可以自定义异常报错信息,方便我们发现与排查问题。
raise常见的用法有以下三种
1.只有一个raise关键字,可以引发当前捕获的异常。
def t1():try:x = "x"x = float(x)except:raise
执行这段代码,会有如下输出:
ValueError: could not convert string to float: 'x'
2.raise + 异常类信息,表示引发异常的类型。
def t1():try:x = "x"x = float(x)except:raise ValueError()
执行上述代码,有如下输出:
ValueError
如果将上面的代码稍作修改:
def t1():try:x = "x"x = float(x)except:raise ZeroDivisionError()
上面的代码则会输出如下:
ValueError: could not convert string to float: 'x'During handling of the above exception, another exception occurred:
...
ZeroDivisionError
上面的例子,float(x)转化的时候,系统抛出了一个ValueError的异常,但是因为我们raise的时候,指定的是ZeroDivisionError,所以还会抛出来一个ZeroDivisionError。
3.raise + 异常类型 + 描述信息
def t1():x = "a"if not x.isdigit():raise ValueError("x must be digit!")
上面代码运行,则会输出如下信息:
ValueError: x must be digit!
3.try-except捕获raise异常
raise出来异常以后,我们经常还用try except对异常进行捕获
def t1():try:x = "a"if not x.isdigit():raise ValueError("x must be a num!")except Exception as ex:print("there is exception: ", repr(ex))
上面的代码运行结果如下
there is exception: ValueError('x must be a num!')
4.assert
assert是用来表明某个条件为真,当assert语句失败返回False的时候,会抛出AssertionError。
看个简单的实例
def t3():a = 2assert a > 5print(a ** 2)
此时代码会抛出异常
AssertionError
如果将a赋值为10,代码会输出100。
assert本质上还是raise一个AssertionError,所以我们也可以使用try-catch来捕获这个异常,而不是让这段code直接崩溃。
def sqrt(x):try:assert x >= 0num = math.sqrt(x)print("num is: ", num)except:print("if you want to solve sqrt num, x must be bigger or equal zero!")sqrt(4)
sqrt(-4)
num is: 2.0
if you want to solve sqrt num, x must be bigger or equal zero!
python 异常处理小结 try except raise assert相关推荐
- Python异常处理try...except...finally raise assert
异常处理: try ...except try代码块放置容易发生异常的语句:except代码块放置处理异常的语句 try ...except...finally finally代码快是任何时候都会执 ...
- python异常处理--try except else raise finally
python异常处理--try except else raise finally 参考文章: (1)python异常处理--try except else raise finally (2)http ...
- Python零基础速成班-第6讲-Python异常处理Exception,tryexcept,raise,assert,输入模块pyinputplus
Python零基础速成班-第6讲-Python异常处理Exception,try&except,raise,assert,输入模块pyinputplus 学习目标 异常处理Exception: ...
- Python 异常处理--raise函数用法
Python 异常处理--raise函数用法 参考文章: (1)Python 异常处理--raise函数用法 (2)https://www.cnblogs.com/darkgui34/p/405074 ...
- 执行transact-sql语句或批处理时发生异常_DAY5-step6 Python异常处理:try, raise,except, finally...
Python中的异常是什么? 异常是在程序执行时发生的错误. 在运行程序时,Python如果发生一个异常,应将其处理以避免程序崩溃. 在Python语言中,异常会在错误时自动触发,或者可以由您的代码触 ...
- 系统学习Python——异常处理:raise语句
如果要显式地触发异常,可以使用raise语句.它们的一般形式相当简单.一条raise语句的组成包括raise关键字,后面跟着可选的要引发的异常类或者异常类的一个实例: raise instance # ...
- python示例异常处理与程序调试_笔记:Python异常处理与程序调试
Python异常处理与程序调试 Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性.异常处理还具有释放对象,中止循环的运行等作用.在程序运行的过程中,如果发生了错误,可以返回事先约 ...
- 十一、Python异常处理
Python异常处理 异常抛出机制,为程序开发人员提供了一种在运行时发现错误,进行回复处理,然后继续执行的能力 #!/usr/bin/python try: open('abc.txt') excep ...
- 【Python学习教程】Python异常处理机制
文章目录 什么是异常处理,Python常见异常类型(入门必读) Python语法错误 Python运行时错误 Python异常处理机制到底有什么用? Python try except异常处理详解(入 ...
- python处理流程-Python异常处理大全(二)
原标题:Python异常处理大全(二) 本文是Python异常处理教程的第二部分,上部分我们简单的介绍了几种异常,及其处理办法,这部分我们将更详细地对Python中产生的异常处理方法进行探讨. 函数使 ...
最新文章
- Java基础部分笔记----------网络编程
- php如何获取select multiple的值
- NVIDIA Jetson NX开发板在U盘挂载的时候出现:error mounting unknown filesystem type ‘exfat‘错误
- winform中键盘和鼠标事件的捕捉和重写(转)
- android activity之间传递对象,Android Activity之间的数据传递
- 厉害了!Spring Boot 2.5正式发布
- Java中遍历文件夹的2种方法
- AndroidManifest.xml 中application 的 android:name 属性作用
- cad添加自己线性_如何自定义自己需要的CAD线型?
- 必须掌握,二叉树的前中后序遍历(迭代+递归)详细代码
- 开源遥感软件(未完待续)
- 真正靠谱免费的数据恢复软件哪个好用?
- 【vue】使用手机app扫描二维码登录
- 【收藏】B站科普硬核节目
- 边缘计算在视频直播场景的应用与实践
- 10行命令60秒快速定位性能瓶颈
- 思科交换机如何配置Trunk?
- 【OpenHarmony】napi基本用法之promise实现
- 物流行业的大数据发展与应用
- 简单便宜智能家居解决方案