首页 / PYTHON / python 异常处理
python 异常处理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python 异常处理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5414字,纯文字阅读大概需要8分钟。
内容图文
![python 异常处理](/upload/InfoBanner/zyjiaocheng/649/5961f997cc664c81a5b6fc2dc61c21cb.jpg)
Python顶层处理器默认对异常的处理方式是:1.捕捉异常 2.打印异常 3.程序退出
异常处理的语句格式:1.捕捉异常 2.打印异常 3.程序正常执行
try: raise xxx ……… except: ……… else: ……… finally: ……… |
try...except...用于捕捉发生的错误
else 如果try中没有发生异常,将会执行else语句
finally 在程序返回前执行,无论有没有异常,它总是会被执行
return 如果finally中有return语句,则执行finally中的return语句返回; 如果finally中没有return语句,则返回到转入finally之前的代码段中返回。 |
|
处理过程: Start Error: integer division or modulo by zero Try End Big End |
|
1.自定义异常类 FooError,该异常类继承与ValueError 2.使用raise抛出异常FooError 3.处理过程 raise error (因为没有使用try except,所以执行10/n会报错) 4.最终没有打印到End |
混合双打 |
处理过程: 在bar()函数中,我们明明已经捕获了错误, 但是,打印一个Big Problem!后,又把错误通过raise语句抛出去了,这不有病么? |
语法嵌套 |
1.使用了两次try...except... 处理过程: 运行结果思考: 这种错误处理方式不但没病,而且相当常见。捕获错误目的只是记录一下,便于后续追踪。 但是,由于当前函数不知道应该怎么处理该错误,所以,最恰当的方式是继续往上抛,让顶层调用者去处理。 好比一个员工处理不了一个问题时,就把问题抛给他的老板,如果他的老板也处理不了,就一直往上抛,最终会抛给CEO去处理。 知识点: raise语句如果不带参数,就会把当前错误原样抛出 |
|
知识点1: 可以有多个except来捕获不同类型的错误 知识点2: Python所有的错误都是从BaseException类派生的,常见的错误类型和继承关系看这里: https://docs.python.org/3/library/exceptions.html#exception-hierarchy |
打印错误信息: |
知识点: str(e)和e.message一样返回字符串类型,只给出异常信息,不包括异常信息的类型 repr(e)给出较全的异常信息,包括异常信息的类型 traceback获取的信息最全,与python命令行运行程序出现错误信息一致 sys.exc_info返回三个值,异常类型,引发的实例,traceback对象 import traceback 结果: |
函数信号条件和raise |
知识点: 用户定义异常引发非错误 异常提供一种方式传达结果信号,不用返回值 可用于任何无返回警示值以表明成功或者失败的函数 |
常用方式 |
知识点: 采用Exception 覆盖全部类型 可采用repr打印出出错类型 有返回值的函数,有错没错都要有默认返回值
结果: |
练习1 |
执行过程: ValueError: invalid literal for int() with base 10: 'a' 返回值是2 |
练习2 |
执行过程: ValueError: invalid literal for int() with base 10: 'a' finally... 返回值是1 知识点是:如果finally中有return语句,则执行finally中的return语句返回; 如果finally中没有return语句,则返回到转入finally之前的代码段中返回。 |
练习3 def foo(): try: r=10/int('a') except ValueError as e: print('ValueError:',e) return 2 finally: print('finally...') return 0 print foo() |
执行过程: ValueError: invalid literal for int() with base 10: 'a' finally... 返回值是2 |
练习4 def foo(): try: r=10/int('1') except ValueError as e: print('ValueError:',e) return 2 else: print('else...') return 3 finally: print('finally...')
print foo() |
执行过程: 没有异常,执行else语句 else... finally... 返回值是3 |
内容总结
以上是互联网集市为您收集整理的python 异常处理全部内容,希望文章能够帮你解决python 异常处理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。