Python 知识量:10 - 41 - 150
当异常引发后,通常有两种处理方式:
忽略异常。让程序显示异常的信息,这种处理方式一般用于程序的调试。
捕获异常。对于正式运行的程序,向用户展示异常的详细信息不是好主意,应当对异常进行捕获处理,并告诉用户发生了什么和该怎么做。
Python通过try/except块来实现异常的捕获和处理。下面设计一个获取整数的程序,程序将不停循环,直到获得一个正确的整数输入信息:
# exception.py def get_int(): while True: try: n=int(input('Give me an integer value:')) return n except ValueError: print('It is not an integer value!')
运行结果为:
>>> ==================== RESTART: D:/PythonTestFile/exception.py =================== >>> get_int() Give me an integer value:d It is not an integer value! Give me an integer value:6.36 It is not an integer value! Give me an integer value:8 8
以上面的代码为例,异常捕获的原理是:try块中的程序处于异常监控中。如果发生异常,程序将跳过未执行的部分,直接跳转到except块;如果没有发生异常,程序将在try块中执行完毕,except块中的内容将被忽略。
许多情况下,函数可能引发的异常类型是不确定的,有些函数可以引发不止一种类型的异常。要了解这些信息可以查看函数的有关文档,或者最好直接试一下。
可以使用try/except块处理多种异常的情况,这在编程中比较常见。实现的方法就是在except子句中指定多种异常。下面是一个示例:
# exception.py def to_int(string,base): try: return int(string,base) except ValueError: return'Value error!' except TypeError: return'Type error!'
运行结果为:
>>> ==================== RESTART: D:/PythonTestFile/exception.py =================== >>> to_int('1000',2) 8 >>> to_int('s',2) 'Value error!' >>> to_int(1000,2) 'Type error!'
程序根据引发的异常类型,执行except块对应的处理代码。
如果不在except子句中区分异常类型,那么它将会捕获所有异常,这意味着只需要关注是否发生异常即可。例如下面的示例:
# exception.py def to_int(string,base): try: return int(string,base) except: return'Error occurred!'
运行结果为:
>>> ==================== RESTART: D:/PythonTestFile/exception.py =================== >>> to_int('1000',2) 8 >>> to_int('s',2) 'Error occurred!' >>> to_int(1000,2) 'Error occurred!'
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6