Python学习笔记12_异常处理及程序调试

#学习内容均为《Python从入门到精通》(明日科技),这本书十分推荐新手阅读
'''
Python中常见的异常
NameError                 尝试访问一个没有声明的变量引发的错误
IndexError                索引超出序列范围引发的错误
IndentationError          缩进错误
ValueError                传入的值错误
KeyError                  请求一个不存在的字典关键字引发的错误
IOError                   输入输出错误(如果读取的文件不错在)
ImportError               当import语句无法找到模块或from无法在模块中找到相应的名称时引发的错误
AttributeError            尝试访问未知的对象属性引发的错误
TypeError                 类型不合适引发的错误
MemoryError               内存不足
ZeroDivisionError         除数为0引发的错误

面对错误可以使用try...except语句捕捉并处理
'''
try:
    10/0
except ZeroDivisionError:
    print('除数不能为0')                           #除数不能为0

try:
    10/0
except (ZeroDivisionError,ValueError) as e:
    print('除数不能为0',e)                         #除数不能为0 division by zero
#同时处理多个异常可以用()将可能出现的异常括起来,多个之间使用逗号分隔,如果想要显示具体的出错原因,可以用as指定一个别名

'''try...except...else'''
try:
    10/5
except ZeroDivisionError:
    print('除数不能为0')
else:
    print('输入正确')
#当没有发生异常时,执行else语句内容

'''
try..except...finally
完整的异常处理语句应该包含finally代码块,通常情况下,无论是否有异常,finally代码块都会被执行

int1 = int(input('请输入一个0-10之间的数字:'))
try:
    10/int1
except ZeroDivisionError:
    print('请不要输入0')
else:
    print(10/int1)
finally:
    print('操作完成')
请输入一个0-10之间的数字:0
请不要输入0
操作完成
'''

'''
使用raise语句抛出异常
raise [ExceptionName[(reason)]]
ExceptionName[(reason)]:可选参数,用于指定抛出的异常名称,以及异常信息的相关描述,如果省略,就会把当前的错误原样抛出
'''
def test1():
    a = 10
    b = 5
    if a > b:
        raise ValueError
if __name__ == '__main__':
    try:
        test1()
    except ValueError:
        print('测试结束')
#测试结束

'''
程序调试可按照使用的IDLE不同进行不同的操作,也可以使用assert语句进行程序调试
'''
def test1():
    a = 10
    b = 20
    assert a > b,'错了~~~'
try:
    test1()
except AssertionError as e:
    print('测试123',e)
#测试123 错了~~~

你可能感兴趣的:(学习笔记,python)