Python异常处理try except else finally
抛出是用来移交控制权的机制,抛出异常也可以称作引发异常。抛出异常后,控制权会查找对应的捕获机制并做进一步处理。错误(Error)则常用来表示系统级错误或底层资源错误。在 Python 中,二者具有相同的处理机制。编程过程中,通常很难将所有的异常状况都处理得很好,通过异常捕获可以针对突发事件做集中处理,从而保证程序的稳定性和健壮性。
在 Python 中使用 try…except…else…finally… 语句检查可能发生异常的代码、捕获异常并做进一步处理,其语法如下:
try:
#尝试执行的代码
[except 错误类型1 :
#针对错误类型1,对应的代码处理]
[except 错误类型2 :
#针对错误类型2,对应的代码处理]
[except (错误类型3,错误类型4):
#针对错误类型3和4,对应的代码处理]
[except Exception as result:
#打印错误信息]
[else:
#没有异常才会执行的代码]
[finally:
#无论是否有异常,都会执行的代码]
例如以下代码尝试执行除法操作:
try: num = int(input("请输入一个整数: ")) result = 5 / num print(result) except ValueError: print("请输入正确的整数") except ZeroDivisionError: print("除 0 错误") except Exception as result: print("未知错误 %s" % result) else : print("正常执行") finally: print("执行完成")当用户输入 0 时,上述代码的运行结果如下所示:
>>> try:
... num = int(input("请输入一个整数: "))
... result = 5 / num
... print(result)
... except ValueError:
... print("请输入正确的整数")
... except ZeroDivisionError:
... print("除 0 错误")
... except Exception as result:
... print("未知错误 %s" % result)
... else :
... print("正常执行")
... finally:
... print("执行完成")
请输入一个整数: 0
除 0 错误
执行完成
当用户输入字母 a 时,上述代码的运行结果如下所示:
>>> try:
... num = int(input("请输入一个整数: "))
... result = 5 / num
... print(result)
... except ValueError:
... print("请输入正确的整数")
... except ZeroDivisionError:
... print("除 0 错误")
... except Exception as result:
... print("未知错误 %s" % result)
... else :
... print("正常执行")
... finally:
... print("执行完成")
请输入一个整数: a
请输入正确的整数
执行完成
可以看到,程序根据用户的不同输入执行了不同的异常处理分支代码块,并在最后执行了 finally 代码块。通常来说,当函数或方法执行出现异常时,异常将被传递给函数或方法的调用方,若逐级传递到主程序,仍然没有对应的异常处理代码块,程序才会最终被终止。因此可以在主函数中适当增加异常捕获代码。
除了代码执行自动抛出异常外,编程者还可以根据程序业务功能需求,人为地抛出异常,这种情况下可以使用 raise 语句,例如:
try: raise Exception except Exception: print("This is an Exception")上述代码的运行结果如下所示:
>>> try:
... raise Exception
... except Exception:
... print("This is an Exception")
This is an Exception
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算