经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
python基础知识之try...except...的详细用法实例
来源:jb51  时间:2022/8/15 18:59:24  对本文有异议

前言

我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except

1.异常类只能来处理指定的异常情况,如果非指定异常则无法处理

  1. s1 = 'hello'
  2. try:
  3. int(s1)
  4. except IndexError as e: # 未捕获到异常,程序直接报错
  5. print (e)

2.多分支

  1. s1 = 'hello'
  2. try:
  3. int(s1)
  4. except IndexError as e:
  5. print(e)
  6. except KeyError as e:
  7. print(e)
  8. except ValueError as e:
  9. print(e)

3.万能异常Exception

  1. s1 = 'hello'
  2. try:
  3. int(s1)
  4. except Exception as e:
  5. print(e)

4.多分支+Exception

  1. s1 = 'hello'
  2. try:
  3. int(s1)
  4. except IndexError as e:
  5. print(e)
  6. except KeyError as e:
  7. print(e)
  8. except ValueError as e:
  9. print(e)
  10. except Exception as e:
  11. print(e)

5.异常的其他机构(try…finally语法)

try…finally语句无论是否发生异常都将会执行最后的代码。

语法如下:

try:
<语句>
finally:
<语句>    #退出try时总会执行
raise

示例:

  1. s1 = 'hello'
  2. try:
  3. int(s1)
  4. except IndexError as e:
  5. print(e)
  6. except KeyError as e:
  7. print(e)
  8. except ValueError as e:
  9. print(e)
  10. #except Exception as e:
  11. # print(e)
  12. else:
  13. print('try内代码块没有异常则执行我')
  14. finally:
  15. print('无论异常与否,都会执行该模块,通常是进行清理工作')

6.主动触发异常(raise语句)

我们可以使用raise语句自己触发异常,raise语法格式如下:

  1. raise [Exception [, args [, traceback]]]

语句中Exception是异常的类型(例如,NameError)参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是"None"。

最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

示例:

一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。

定义一个异常非常简单,如下所示:

  1. def functionName( level ):
  2. if level < 1:
  3. raise Exception("Invalid level!", level)
  4. # 触发异常后,后面的代码就不会再执行
  1. try:
  2. raise TypeError('类型错误')
  3. except Exception as e:
  4. print(e)

7.自定义异常

通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。

以下为与BaseException相关的实例,实例中创建了一个类,基类为BaseException,用于在异常触发时输出更多的信息。

在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。

  1. class Networkerror(BaseException):
  2. def __init__(self,msg):
  3. self.msg=msg
  4. def __str__(self):
  5. return self.msg
  6. try:
  7. raise Networkerror('类型错误')
  8. except Networkerror as e:
  9. print(e)

8.断言:assert条件

  1. assert 1 == 1
  2. assert 1 == 2

9.总结try…except

  • 把错误处理和真正的工作分开来
  • 代码更易组织,更清晰,复杂的工作任务更容易实现
  • 毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了

补充:多重try

如果是嵌套的try...except...的话,这一层raise的错误,会被上一层的try...except...进行捕获

总结

到此这篇关于python基础知识之try...except...详细用法的文章就介绍到这了,更多相关python try...except...详细用法内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号