码迷,mamicode.com
首页 > 其他好文 > 详细

异常处理

时间:2018-05-24 22:21:41      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:object   print   课堂   数据   api   英文   字符   last   不能   

一、异常

有时候我们写程序的时候,会出现一些错误或异常,导致程序终止。例如,做除法时,除数为0,会引起一个ZeroDivisionError

异常例子:

res=5/0
print(res)
#运行报错
#ZeroDivisionError: division by zero

字符串与整型不能相加异常:

import random
guess=random.randint(10,20)
num=input(请输入一个数字:)
print(num+guess)

# 请输入一个数字:6
# Traceback (most recent call last):
#   File "F:/自动化学习/课堂练习/day8/new_api/异常处理.py", line 6, in <module>
#     print(num+guess)
# TypeError: Can‘t convert ‘int‘ object to str implicitly

英文字符串转整型异常:

d={price:20}
price=input(请输入一个数字:)
d[price]-=int(price)
print(d)

# D:\System\Python3\python.exe F:/自动化学习/课堂练习/day8/new_api/异常处理.py
# 请输入一个数字:ert
# Traceback (most recent call last):
#   File "F:/自动化学习/课堂练习/day8/new_api/异常处理.py", line 16, in <module>
#     d[‘price‘]-=int(price)
# ValueError: invalid literal for int() with base 10: ‘ert‘

下标越界异常:

li=[1,2,3,4,5]
print(li[9])
# Traceback (most recent call last):
#   File "F:/自动化学习/课堂练习/day8/new_api/异常处理.py", line 27, in <module>
#     print(li[9])
# IndexError: list index out of range

二、异常处理

1、当代码中运行可能会遇到异常时,可以用try ... except  例如输入的值异常时:可以try ..except ValueError as e:

first=input(请输入除数)
second=input(请输入被除数)
#用户的输入不可预测,可能会输入英文等非法字符,所以在可能出错的代码前用try,尝试运行该代码是否有异常
try:
    first=int(first)
    second=int(second)
    res=first/second
    print(res)
#except 则是出错错误会怎么办,因为这个报错是ValueError,所以写ValueError
except ValueError as e:#e 代表错误信息,如果上面的两行代码出现了ValueError这个错误则走这里
    print(e)
    print(请输入整数)
else:#没有出错,这个是没有异常时候走,不是必须写的
    print(res)

#结果:
请输入除数f
请输入被除数2
invalid literal for int() with base 10: f

2、多个异常可以:try...excepy...excepy,例如输入的值异常、被除数不能为0异常时:可以try ...except ValueError as e:...exceptZeroDivisionErroras e:

first=input(请输入除数)
second=input(请输入被除数)
#用户的输入不可预测,可能会输入英文等非法字符,所以在可能出错的代码前用try,尝试运行该代码是否有异常
try:
    first=int(first)
    second=int(second)
    res=first/second
    print(res)
#except 则是出错错误会怎么办,因为这个报错是ValueError,所以写ValueError
except ValueError as e:#e 代表错误信息,如果上面的两行代码出现了ValueError这个错误则走这里
    print(e)
    print(请输入整数)
except ZeroDivisionError as e:
    print(e)
    print(除数不能为0)
else:#没有出错,这个是没有异常时候走,不是必须写的
    print(res)

#结果:请输入除数12
请输入被除数0
division by zero
除数不能为0

3、当多个异常可以只用一个try ...except Exception as e:

first=input(请输入除数)
second=input(请输入被除数)
#用户的输入不可预测,可能会输入英文等非法字符,所以在可能出错的代码前用try,尝试运行该代码是否有异常
try:
    first=int(first)
    second=int(second)
    res=first/second
except Exception as e:
    print(e)
else:#没有出错,这个是没有异常时候走,不是必须写的
    print(res)
#结果:
请输入除数qw
请输入被除数g
invalid literal for int() with base 10: qw

4、finally:不管出错或者没有出错都会执行它,这个不是必须写的。

一般要写的情况有:例如操作数据库成功或者失败,都要关闭数据库

first=input(请输入除数)
second=input(请输入被除数)
#用户的输入不可预测,可能会输入英文等非法字符,所以在可能出错的代码前用try,尝试运行该代码是否有异常
try:
    first=int(first)
    second=int(second)
    res=first/second
    print(res)
#except 则是出错错误会怎么办,因为这个报错是ValueError,所以写ValueError
# except ValueError as e:#e 代表错误信息,如果上面的两行代码出现了ValueError这个错误则走这里
#     print(e)
#     print(‘请输入整数‘)
# except ZeroDivisionError as e:
#     print(e)
#     print(‘除数不能为0‘)
except Exception as e:
    print(e)
else:#没有出错,这个是没有异常时候走,不是必须写的
    print(res)
finally:#不管出错或者没有出错都会执行它,不是必须写的。要写的情况:例如操作数据库成功或者失败,都要关闭数据库
    print(我是finally)

 

异常处理

标签:object   print   课堂   数据   api   英文   字符   last   不能   

原文地址:https://www.cnblogs.com/hwtfamily/p/9085368.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!