异常:
程序在运行的时候,如果python解释器遇到一个错误,会停止程序的执行,
并且提示一些错误的信息,这就是异常
我们在程序开发的时候,很难将所有的特殊情况都处理,通过异常捕获可以针对
突发时间做集中处理,从而保证程序的健壮性和稳定性
在程序开发中,如果对某些代码的执行不能呢个确定(程序语法完全正确)
可以增加try来捕获异常
try:
尝试执行的代码
expect:
出现错误的处理
try:
#不能确定执行的代码
num=int(raw_input('请输入一个整数: '))
except:
print '请输入正确的整数'
print '*' *50
需求:
1.提示用户输入一个整数
2.使用8除以用户输入的整数并输出
根据错误类型来捕获异常
try:
尝试执行的代码
expect 错误类型1:
针对错误类型1,对应的代码处理
expect 错误类型2:
针对错误类型2,对应的代码处理
try:
#提示用户输入一个整数
num =int(raw_input('请输入一个整数: '))
#使用8除以整数并且输出
result=8/num
print result
except ZeroDivisionError:
print '0不能做除数'
except ValueError:
print '输入的值不是数字'
"""
1.0不能做除数
2.输入的值不是数字
"""
print '*'*50
try:
#提示用户输入一个整数
num=int(raw_input('输入一个整数:'))
#使用8除以整数并且输出
result=8/num
print result
except ZeroDivisionError:
print '0不能做除数'
except ValueError:
print '输入的值不是数字'
#没有预先判断到的错误,但是如果出现,我们也不希望意外停止
except Exception as result:
print '未知错误%s'%result
finally:
#无论是否有异常,都会执行的代码
print '无论是否有异常,都会执行的代码'
异常的传递:
def demo1():
return int(raw_input('输入整数:'))
def demo2():
return demo1()
#函数的错误:一级一级的去找,最终会将异常传递到主程序里面
#print demo2()
try:
print demo2()
except Exception as result:
print '未知错误%s'%result
需求:提示用户输入密码,如果长度小与8,就抛出异常
def input_passwd():
#1.提示用户输入密码
pwd=raw_input('请输入密码:')
#2.判断密码的长度>=8,返回用户的密码
if len(pwd) >=8:
return pwd
#3.如果<8 主动抛出异常
print '主动抛出异常'
#1.创建异常对象
ex=Exception('密码长度不够')
#2.主动抛出异常
raise ex
#注意:只抛出异常而不捕获异常,代码会出错
try:
print input_passwd()
except Exception as result:
print result
断言:可以理解为提前预言,让人更好的知道错误的原因
def func(num,div):
assert(div!=0),'div不能为0'
return num/div
print func(10,0)