Python3 异常与断言
2019-03-10 11:53:04来源:博客园 阅读 ()
1.异常
当出现错误时,程序就会发生异常
num1=input('Please input a num1: ')
num2=input('Please input a num2: ')
print(float(num1)/float(num2))
输入num1=3,num2=0,程序产生异常
除了除零异常,还有许多种异常:
ImportError:无法引入包或模块
IndexError:下标索引超界
NameError:使用还未赋值的变量
SyntaxError:代码逻辑出错,不能执行
TypeError:传入的对象类型与要求不符
ValueError:传入一个不被期望的值,即使类型正确
KeyError:试图访问字典里不存在的键
IOError:输入输出异常
ZeroDivisionError:除零
AttributeError:尝试访问未知的对象属性
(1)异常捕获
使用try…except…语句来捕获异常
num1=input('Please input a num1: ')
num2=input('Please input a num2: ')
try:
print(float(num1)/float(num2))
except:
print('Error!')
输出结果:
也可以在except后面加上具体的异常
num1=input('Please input a num1: ')
num2=input('Please input a num2: ')
try:
print(float(num1)/float(num2))
except ZeroDivisionError:
print('Error!')
(2)处理多个异常
上面的例子不止会出现除零异常,如果我输入的不是数字而是字母,也会产生异常
num1=input('Please input a num1: ')
num2=input('Please input a num2: ')
try:
print(float(num1)/float(num2))
except ZeroDivisionError:
print('Error!')
except ValueError:
print('Input a num!')
输出结果:
也可以只写一个except语句
num1=input('Please input a num1: ')
num2=input('Please input a num2: ')
try:
print(float(num1)/float(num2))
except (ZeroDivisionError,ValueError): #一定要用()包起来
print('Error!')
(3)else语句
num1=input('Please input a num1: ')
num2=input('Please input a num2: ')
try:
print(float(num1)/float(num2))
except (ZeroDivisionError,ValueError):
print('Error!')
else:
print('Input right!')
如果产生异常就不会执行else语句
(4)finally语句
num1=input('Please input a num1: ')
num2=input('Please input a num2: ')
try:
print(float(num1)/float(num2))
except (ZeroDivisionError,ValueError):
print('Error!')
else:
print('Input right!')
finally:
print('Over!')
不管会不会产生异常,都会执行finally语句.所以finally语句多用来收尾.
(5)输出异常信息
如果想要输出异常信息,并且使用默认的异常提示
num1=input('Please input a num1: ')
num2=input('Please input a num2: ')
try:
print(float(num1)/float(num2))
except Exception as e:
print(e)
print('Error!')
else:
print('Input right!')
finally:
print('Over!')
输出结果:
(6)抛出异常
raise需要指定一个参数,必须是一个异常的实例或者是异常的类
a=1
raise ValueError('Error!')
输出结果:
在except里面,raise可以不用传入参数,这样会将异常再次抛出
num1=input('Please input a num1: ')
num2=input('Please input a num2: ')
try:
print(float(num1)/float(num2))
except Exception as e:
print(e)
raise
输出结果:
2.断言
assert后面接的第一个参数应该是一个布尔表达式,如果表达式的值为True,不会中断程序,如果表达式的值为False,就会中断程序
assert后面接的第二个参数是产生中断之后要输出的内容
num1=input('Please input a num1: ')
num2=input('Please input a num2: ')
assert (float(num2)!=0),'Error!'
print(float(num1)/float(num2))
输出结果:
原文链接:https://www.cnblogs.com/zmqqq/p/10493645.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- python3 enum模块的应用 2019-08-13
- python3 之 趣味数学题(爱因斯坦) 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash