Python用Try语句捕获异常的实例方法
作者:Ma_Qiao2020 发布时间:2021-07-14 10:28:54
python的异常,以及用try复合语句处理异常。
运行代码时有时会出现各种各样的错误,致使解析器中断执行,并提示xxxxxxErorr的提示,后面跟具体的错误的描述,这被称为是引发了异常。
其实异常告诉我们的是遇到了什么类型的错误。xxxxErorr就是python内置的异常类型。每一种异常类型,都有它自己的错误信息。
有一种比较容易辨识,容易处理的错误,语法错误:SyntaxError
是由于写代码时的语法错误,大部分的解析器都会提前提示,像pycharm,在书写时如果语法错误,都会有波浪线提示。语法上的错误很好处理,类似与写文章写错字了,改正就行了。
如何处理异常:
除了语法错误能轻松搞定,其他有些异常类型不影响代码的功能,而又不想让异常中断执行时,就要对异常进行处理,而不让他中断程序:
例如:有一个字典personDetail={"name":“光头强”}里边是光头强的资料,想取到它的资料,但具体都有什么资料我们不知道,如果输入的键不存在就会引发异常而中断执行。致使后面的代码也为无法执行。
那么就要捕获这些异常,绕过它,能让下面的代码继续运行。python提供了try语句来实现这些功能。
语法:
try:
可能发生异常的代码
except 异常类型:
捕获的异常后要执行的代码
try 语句的工作原理如下。
1)执行 try 子句时如果没有异常发生,则跳过 except 子句并完成 try 语句的执行。
2)如果在执行try 子句时发生了异常,则跳至except子句。
3)执行 except 子句 ,如果引发异常的类型和 except 关键字后面的异常匹配,就是捕获了异常,执行except子句。
例如:
gtqDict={"Name":"光头强","Age":34,"Gender":"男"
try:
print(gtqDict["Weight"])
except KeyError:
print("Weight不存在,继续走"
print(gtqDict["Age"])
print(gtqDict["Gender"])
例子不管weight是否存在,都能使得程序完。
捕获多个异常:
有时不确定会发生哪种异常,就把异常类型以元组的形式组包统统放在except后面,来匹配可能发生的异常:
比如:要打印光头强年龄的Age键,不确定这个键是否存在,就用KeyErorr,不确定会不会发生键名是否正确,就用NameErorr。
例如:
gtqDict={"Name":"光头强","Age":34,"Gender":"男"
try:
print(gtqDict["age"])
except (KeyError,KeyError):
print("age错误"
print(gtqDict["Name"])
print(gtqDict["Gender"])
捕获异常的描述信息:可以将异常的具体描述打印出来,以供参考。
try:可能发生异常的代码
except (KeyError,KeyError) as 信息变量:
print(信息变量)
例如:
gtqDict={"Name":"光头强","Age":34,"Gender":"男"}
try:
print(gtqDict["Weight"])
except (KeyError,KeyError) as e:
print(type(e),e)
print(gtqDict["Name"])
print(gtqDict["Gender"])
捕获所有异常:
前面提过,引发异常的xxxxErorr都是python异常的类型。python中所有异常类型都是基类Exception的派生类。
那么在写代码的时候不用指定异常的具体类型,只要捕获基类就等于捕获了所有的异常,但输出的是具体的异常信息,这很有利于在大范围内找到具体的错误。
语法:
try:可能发生异常的代码
except Excepthon as 信息变量:
print(信息变量)
例如:
gtq="光头强"
try:
print(name)
except Exception as e:
print(type(e),e
print("gtq")
---<class 'NameError'> name 'name' is not defined
---gtq
异常里的else子句:
else子句是可选的,如果使用,必须放在所有的except子句之后。
它是在try子句没有发生异常的情况执行。
例如:
gtq="光头强"
try:
name=gtq
except Exception as e:
print(type(e),e)
else:
print("%s是一个伐木工人"%name)
finally子句: 写在try语句的最后。
不管 try 子句里面是否有异常,finally 子句都会执行。
例如:
gtq="光头强"
try:
name=GTQ
except Exception as e:
print(type(e),e)
else:
print("%s是一个伐木工人"%name)
finally:
print("调用资料结束")
---<class 'NameError'> name 'GTQ' is not defined
---调用资料结束


猜你喜欢
- 应用场景:使用pandas把多个相同结构的Excel文件合并为一个。原始数据: 相关代码:import osimport pand
- 导语:哈喽,哈喽~小编不知道你有没有经历过,想联系一位很长时间没有联系的朋友,发现对方很早以前已经把你删除了,而你还一无所知。反正小编经历过
- 1、 自定义菜单adminx.pyclass GlobalSetting(object): site_title = u'xxx后台
- 数据类型优化首先我们介绍一下这个schema:schema(发音 “skee-muh” 或者&
- 1. jquery.jqzoom.js//*************************************************
- 这是Smashing Magazine花费几个月的时间研究编写的2009 年Web设计风格与潮流,Smashing Magazine 的编辑
- 准备工作去年的时候,青云发表过关于栅格系统的文章 . 我们知道网页的栅格系统是运用固定的格子设计版面布局,使其风格工整简洁. 视觉上来说,栅
- // Xml 转 数组, 包括根键 function xml_to_array( $xml ) { $reg = "/<(\
- 在开发的过程中,几乎不可能一次性就能写出毫无破绽的程序,断点调试代码是一个普遍的需求。作为前端开发工程师,以往我们开发的JavaScript
- 引起这个的原因大概是现安装了.Net Framework后装的IIS导致.Net没有在IIS里注册。 在网上找了很久都是说从.net命令行工
- 相信很多人都跟小编一样不管是什么账号,如果很久不用就会忘记登录密码,像数据库SQL Server2008也一样有用户名和登录密码,下面小编就
- #!/usr/bin/env python3# -*- coding: utf-8 -*-import globfrom os import
- SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行。SQLAl
- Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下:Tkinter: Tkinter 模块(Tk 接口)是 P
- 一、使用我使用的是python3,可以自行搜索下载二、安装phone模块pip install phone三、测试代码如下:from pho
- 运行时请在其目录下添加user.txt passwd.txt两文件。否则会报错。程序没有加异常处理。代码比较挫.....#coding:ut
- 如下所示:INPUT = c_int * 4# 实例化一个长度为2的整型数组input = INPUT()# 为数组赋值(input这个数组
- 本来是要写个程序用的,没写完不写了,这一部分就贴出来吧验证域名和IPclass JianKong(): ''
- 说在前头最近在做毕设,题目是道路拥堵预测系统,学长建议我使用SVM算法进行预测,但是在此之前需要把Excel中的数据进行二次处理,原始数据不
- 四则运算表达式求值思路说明使用双栈来实现——存放数值的栈 nums 与存放运算符