常见的异常类型:
ZeoDivisionError 除数为0的错误
IOError 输入输出错误 eg:读取的文件不存在时
ValueError 传入的值错误
IndexError 索引超出序列范围
KeyError 请求的字典的关键字不存在
NameError 访问一个没有声明的变量
IndentationError 缩进错误
ImportError import语句无法找到模块或在from无法在模块中找到相应的名称
TypeError 类型不合适
AttributeError 访问未知的对象属性
MemoryError 内存不足
异常处理语句:
1、try.....except
"""
语法 :
try:
block1 可能有问题的代码块
except exceptionNamme1 [as alias] 指定要捕获的异常
block2 进行处理的结果
except exceptionNamme1 [as alias] 指定要捕获的异常
block3 进行处理的结果
......
"""
while True :
def division():
print("\n==========分苹果==========")
apple = int(input("请输入苹果的数目:"))
childern = int(input("请输入小朋友的数目:"))
result = apple // childern
remain = apple - result * childern
if remain > 0:
print(apple,"个苹果,分给",childern,"个小朋友","每人分",result,"个","剩
下",remain,"个")
else:
print(apple, "个苹果,分给", childern, "个小朋友", "每人分", result, "个" )
if __name__ == "__main__":
try:
division()
except ZeroDivisionError:
print("\n出错了~_~,—个苹果不能分给0个小朋友")
except ValueError as e:
print("输入错误",e)
2、try......except......else语句
def division():
print("\n==========分苹果==========")
apple = int(input("请输入苹果的数目:"))
childern = int(input("请输入小朋友的数目:"))
result = apple // childern
remain = apple - result * childern
if remain > 0:
print(apple, "个苹果,分给", childern, "个小朋友", "每人分", result, "个", "剩下", remain, "个")
else:
print(apple, "个苹果,分给", childern, "个小朋友", "每人分", result, "个")
if __name__ == "__main__":
try:
division()
except ZeroDivisionError:
print("\n出错了~_~,—个苹果不能分给0个小朋友")
except ValueError as e:
print("输入错误", e)
print("请重新输入:")
else: # 当try 语句块中没有异常时执行的语句
print("分苹果顺利完成")
3、try......except......finally语句
"""
try:
black1
except ExceptionName [as alias]
black2
......
finally:
black3 在任何情况下都会执行的代码放在finally中
"""
def division():
print("\n==========分苹果==========")
apple = int(input("请输入苹果的数目:"))
childern = int(input("请输入小朋友的数目:"))
result = apple // childern
remain = apple - result * childern
if remain > 0:
print(apple, "个苹果,分给", childern, "个小朋友", "每人分", result, "个", "剩下", remain, "个")
else:
print(apple, "个苹果,分给", childern, "个小朋友", "每人分", result, "个")
if __name__ == "__main__":
try:
division()
except ZeroDivisionError:
print("\n出错了~_~,—个苹果不能分给0个小朋友")
except ValueError as e:
print("输入错误", e)
print("请重新输入:")
finally: # 在任何情况下都会执行的代码放在finally中
print("进行了一次分苹果")
4、raise 语句抛出异常
"""
如果某个在某个方法中可能存在异常,但又不想当前处理,则可用raise 在函数或方法中抛出异常
语法 :
raise [ExceptionName[(reason)]]
ExceptionName[(reason)]为可选参数,用于指定抛出的异常名称以及异常信息的相关描述,如果省略,则当前错误会原样输出
"""
def division():
print("\n==========分苹果==========")
apple = int(input("请输入苹果的数目:"))
childern = int(input("请输入小朋友的数目:"))
if apple < childern:
raise ValueError("苹果太少了!!!")
result = apple // childern
remain = apple - result * childern
if remain > 0:
print(apple, "个苹果,分给", childern, "个小朋友", "每人分", result, "个", "剩下", remain, "个")
else:
print(apple, "个苹果,分给", childern, "个小朋友", "每人分", result, "个")
if __name__ == "__main__":
try:
division()
except ZeroDivisionError:
print("\n出错了~_~,—个苹果不能分给0个小朋友")
except ValueError as e:
print("输入错误", e)
finally: # 在任何情况下都会执行的代码放在finally中
print("进行了一次分苹果")