异常分类
except: 如果有异常时, 能够执行的代码
finally: 无论是否存在异常,都会被执行的代码
```python# 情况2try:可能出现异常的代码except 异常的类型1:print('这里可以打印为什么出错')except 异常的类型2:print('这里可以打印为什么出错')except Exception as err: # 注意:如果有多个except,针对异常类型的顺序,应该把最大的Exception放在最后,因为它包含了大部分Error类型.print('出错了',err) # err可以返回出错的原因finally:无论是否存在异常,都会被执行的代码
# 情况3try:有可能出现异常的代码except 异常类型1:...else:如果try中没有发生异常,则进入的代码 # 注意:如果使用else,则在try的代码中不能出现return语句.
示例说明
- 没有办法控制客户的输入, 有可能是字母, 会报错, 将这部分代码放在try语句中;
- 一旦try语句中的代码报错, 则会执行except中的代码,except中的代码可以理解为: 如果报错, 希望被执行的代码是什么…
如果出现多种异常,那么可以使用多个except语句; ```python def func(): try:
n1 = int(input('输入第一个数字:')) # 1, 如果输入2s, 报错ValueErrorn2 = int(input('输入第一个数字:'))# 加法运算per = input('输入运算符号(+,-,*,/):')if per == '+':sum = n1 + n2print('两个数相加,结果是:',sum)elif per == '-':sum = n1 - n2print('两个数相减,结果是:',sum)elif per == '*':sum = n1 * n2print('两个数相乘,结果是:',sum)elif per == '/':sum = n1 / n2 # 2, 如果n2输入为0, 报错 ZeroDivisionErrorprint('两个数相除,结果是:',sum)else:print('符号输入错误!')
except ValueError: # 3, 上面的输入一旦出错, 就执行这里的代码
print('注意:必须输入数字!!!!')
except ZeroDivisionError:
print('注意:除数不能为零!!!!')
func()
```pythondef func():try:n1 = int(input('请输入一个数字:'))print(n1)# return 1except ValueError:print('输入的必须是数字...')return 2else: # 注意:如果使用else,则在try的代码中不能出现return语句. 否则else中的代码块不会被执行print('数字输入完毕!') # 没有发生异常的情况下才会执行的代码块func()
# 文件操作 f = open(...) f.write() f.close()# 数据库操作 close()# 以上两种,不管操作有没有异常,最终都需要自动的释放资源出来def func():f = Nonetry:f = open('file/openfile_read_bak.txt')x = f.read()print(x)return 1except Exception as err:print(err)return 2finally: # 只要有finally,return 1就不会完全终止函数的执行, finally下面的代码始终会执行print('---finally---')if f:f.close()return 3 # 这个return也会执行func()
