try/except语句
try/except语句主要用来处理程序运行时遇到的一些异常情况(exception),例如除0(ZeroDivisionError)、类型错误(TypeError)、索引异常(IndexError)、键错误(KeyError)、导入模块错误(ImportError)等等
在try语句块中如果发现exception,那么中断接下来try块中的语句,进入exceptX
语句块,找到第一个匹配的异常处理块执行,否则进入最终的except
语句。由此可以,比较规范的try/except语句最底下无论如何应该有一个except语句,因为我们无法穷举所有exceptX的异常情况
我们也可以在except AError
后边加上as B
,来打印错误参数,详见下面的示例。
示例:
try:
# 取消注释查看具体效果
# import a_error_module
# a = 1+'1'
# b = [0]*10;print(b[12])
except ImportError:
print('导入模块错误')
except TypeError:
print('类型错误')
except IndexError as error1:
print('索引错误,错误是:', error1)
except :
print('其他错误!')
try/except/finally语句
try/except/finally语句,无论有没有excetion都会执行finally语句块,finally语句一定要放在最底下,详见示例。
示例:
try:
a = 2
# b = 1+'1' # 无论注不注释都会执行finally语句
except TypeError:
print('Type error!')
except :
print('其他错误!')
finally:
print('hello')
在一些时候finally语句可以发挥很大的作用,例如在try语句块中成功打开文件之后,下面出现了异常,那么会直接跳出try语句块,这样文件可能无法关闭,有了finally语句,无论是否出现了异常,都可以正常关闭文件。
示例:
try:
my_file = open('test.txt', 'w')
a = 5/0
except ImportError:
print('导入模块错误')
except TypeError:
print('类型错误')
except IndexError as error1:
print('索引错误,错误是:', error1)
except:
print('其他错误!')
finally:
my_file.close()
print('文件成功关闭!')
try/except/else/finally语句
在C语言和C++中,else总是配合if使用,但是python中则可能搭配很多关键字使用。其中就包含try语句,也就是无exception时执行else语句。注意:如果要使用else的话,必须在expect和finally之间
示例:
try:
my_file = open('test.txt', 'w')
# a = 5/0
except ImportError:
print('导入模块错误')
except TypeError:
print('类型错误')
except IndexError as error1:
print('索引错误,错误是:', error1)
except:
print('其他错误!')
else:
print('没有错误!')
finally:
my_file.close()
print('文件成功关闭!')
循环语句配合else使用
在python中,else还可以配合循环语句使用,如果循环能够执行完,那么不执行else语句,否则执行else语句
示例1:
def judge(n):
'判断素数'
for i in range(2, n):
if(n % i == 0):
print(n, 'is not prime')
break
else:
print(n, 'is prime')
a = int(input())
judge(a)
示例2:
def judge(n):
'判断素数'
for i in range(2, n):
if(n % i == 0):
return int(0)
else:
return int(1)
count = 0
while count < 3:
a = int(input())
count += 1
if(judge(a)):
continue
else:
break
else:
print('你输入的3个数都是素数!')