Python异常处理操作实例详解

作者:chengqiuming 时间:2023-05-06 11:31:05 

本文实例讲述了Python异常处理操作。分享给大家供大家参考,具体如下:

一、异常处理的引入


>>>whileTrue:
try:
x = int(input("Please enter a number: "))
break
exceptValueError:
print("Oops! That was no valid number. Try again ")
Please enter a number: y
Oops!That was no valid number.Try again
Please enter a number:1.3
Oops!That was no valid number.Try again
Please enter a number:5

二、try语句工作方式

1、执行try子句(在关键字try和关键字except之间的语句)

2、如果没有异常发生,忽略except子句,try子句执行后结束。

3、如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。

4、如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。

5、一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。

6、处理程序将只针对对应的try子句中的异常进行处理。

7、一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组,例如:


except (RuntimeError, TypeError, NameError):
   pass

8、最后一个except子句可以忽略异常的名称,它将被当作通配符使用。你可以使用这种方法打印一个错误信息,然后再次把异常抛出。


>>>import os
>>>try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
exceptOSErroras err:
print("OS error: {0}".format(err))
exceptValueError:
print("Could not convert data to an integer.")
except:
print("Unexpected error:", sys.exc_info()[0])
raise
OS error:[Errno2]No such file or directory:'myfile.txt'

三、else子句

try except 语句还有一个可选的else子句,如果使用这个子句,那么必须放在所有的except子句之后。这个子句将在try子句没有发生任何异常的时候执行。


>>>try:
f = open('a.txt','r')
exceptIOError:
print('cannot open')
except:
print('other ERR')
else:
print('file close')
f.close()
cannot open

使用 else 子句比把所有的语句都放在 try 子句里面要好,这样可以避免一些意想不到的、而except又没有捕获的异常。

四、异常处理try中函数

异常处理并不仅仅处理那些直接发生在try子句中的异常,而且还能处理子句中调用的函数(甚至间接调用的函数)里抛出的异常。


>>>def this_fails():
x =1/0
>>>try:
this_fails()
exceptZeroDivisionErroras err:
print('Handling run-time error:', err)
Handling run-time error: division by zero

更多Python相关内容感兴趣的读者可查看本站专题:《Python入门与进阶经典教程》、《Python字符串操作技巧汇总》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

来源:https://blog.csdn.net/chengqiuming/article/details/78600941

标签:Python,异常处理
0
投稿

猜你喜欢

  • 如何利用饰器实现 Python 函数重载

    2022-10-16 20:42:41
  • vue+Element-ui实现分页效果

    2024-04-26 17:38:17
  • InnoDB的关键特性-插入缓存,两次写,自适应hash索引详解

    2024-01-18 01:28:23
  • Python+pytorch实现天气识别

    2021-09-23 18:49:13
  • PHP _construct()函数讲解

    2023-06-14 16:56:43
  • 利用python解决mysql视图导入导出依赖的问题

    2023-10-28 07:27:38
  • 使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例

    2023-05-19 13:05:18
  • python 全角半角互换的实现示例

    2021-02-03 20:30:52
  • python中可以发生异常自动重试库retrying

    2022-03-26 02:23:06
  • Python接口测试数据库封装实现原理

    2024-01-27 11:19:46
  • python基于xml parse实现解析cdatasection数据

    2023-08-18 13:27:36
  • sql字段解析器的实现示例

    2024-01-16 13:36:53
  • Mysql分组查询每组最新一条数据的三种实现方法

    2024-01-13 16:32:04
  • python如何查找图片按钮的坐标位置

    2023-01-07 21:57:53
  • 基于python使用Pillow做动态图在图中生成二维码以及图像处理

    2022-12-29 16:33:03
  • Python 过滤错误log并导出的实例

    2023-10-21 10:18:36
  • 在python中使用xlrd获取合并单元格的方法

    2023-09-09 17:00:43
  • SQL SERVER使用表分区优化性能

    2024-01-14 01:32:59
  • 详解JavaScript实现异步Ajax

    2024-04-16 10:42:25
  • Flask-SQLALchemy基本使用方法

    2023-07-01 23:19:16
  • asp之家 网络编程 m.aspxhome.com