句废话都没有的Pycharm(十一):异常处理
介绍:
- 1.1 try-expet
- 1.2 多个except结构
- 1.3 try—except—else
- 1.4 try—except—elset—finally
- 2.traceback
1.异常处理
由被动掉坑导致的异常,被动掉坑是指由于用户的错误操作导致的异常。可以通过如下语法让代码继续运行:
1.1 try-expet
try
可能出现异常的代码
except xxx:
异常处理代码
例如:
#try——except
try:
a=int(input('Plaesr input a number:'))
b=int(input('Plaesr input a number:'))
c=a/b
print('a/b=',c)
#当输入的b为0时,会出现ZeroDivisionError
except ZeroDivisionError:
print('Divisor cannot be 0')
结果:
1.2多个except结构
当然用户操作失误的可能性有很多,因此可以使用多个except结构:
try
可能出现异常的代码
except xxx:
异常处理代码
except xxx:
异常处理代码
except xxx:
异常处理代码
例如:
#多个except结构
try:
a=int(input('Plaesr input a number:'))
b=int(input('Plaesr input a number:'))
c=a/b
print('a/b=',c)
'''当输入的b为0时,会出现ZeroDivisionError,
当输入字母时,会出现ValueError'''
except ZeroDivisionError:
print('Divisor cannot be 0')
except ValueError:
print('Input cannot be letter')
结果:
1.3try—except—else:如果try中没有异常,执行else语句块,如果抛出异常,执行except语句块。
语法:
try
可能出现异常的代码
except xxx:
异常处理代码
except xxx:
异常处理代码
except xxx:
异常处理代码
else:
代码块
例如:
#try——except——else
try:
a=int(input('Plaesr input a number:'))
b=int(input('Plaesr input a number:'))
c=a/b
'''当输入的b为0时,会出现ZeroDivisionError,
当输入字母时,会出现ValueError'''
except ZeroDivisionError:
print('Divisor cannot be 0')
except ValueError:
print('Input cannot be letter')
else:
print('a/b=', c)#如果try中没有异常,执行else语句块
结果:
1.4try—except—elset—finally: 无论try中是否抛出异常都会执行,用来释放try中申请的资源。
语法:
try
可能出现异常的代码
except xxx:
异常处理代码
except xxx:
异常处理代码
except xxx:
异常处理代码
else:
代码块
finally:
代码块
例如:
try:
a=int(input('Plaesr input a number:'))
b=int(input('Plaesr input a number:'))
c=a/b
'''当输入的b为0时,会出现ZeroDivisionError,
当输入字母时,会出现ValueError'''
except ZeroDivisionError:
print('Divisor cannot be 0')
except ValueError:
print('Input cannot be letter')
else:
print('a/b=', c)
finally:
print('运行结束')#无论try中是否抛出异常都会执行
结果:
2. traceback
使用traceback打印异常信息。
语法:
import traceback
try:
print('aaaaaaaaa')
div=1/0
except:
traceback.print_exc()
代码:
#traceback
import traceback
try:
print('aaaaaaaaa')
div=1/0
except:
traceback.print_exc()
结果:
结果告诉我们,在第七行出错。