第八篇 Python异常
程序在运行时,如果Python解释器遇到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常,程序通知执行并且提示错误信息,这个动作,我们通常称之为:抛出异常。
1.简单的捕获异常的语法
在程序开发中,如果对某些代码的执行不能确定是否正确,可以增加try来捕获异常:
try:
尝试执行的代码
except:
出现错误的处理
try 尝试,下方编写要尝试的代码,不确定是否能够正确运行的代码
except 如果不是,下方编写尝试失败的代码
2.根据错误类型捕获异常
在程序执行时,可能会遇到不同类型的异常,可以针对不同的类型,做出不同的响应,此时就需要捕获错误类型。
try:
num = int(input("请输出整数:"))
result = (3 / num)
print(result)
except ZeroDivisionError:
print("除零错误")
except ValueError:
print("请输入正确的整数")
3.捕获未知错误的异常
在开发时要预判所有可能出现的错误是有难度的,因此如果希望程序无论出现任何错误,都不会因为Python解释器抛出异常而终止,可以再增加一个except:
try:
num = int(input("请输出整数:"))
result = (3 / num)
print(result)
except ZeroDivisionError:
print("除零错误")
except Exception as result:
print("未知错误 %s" %result)
说明:Exception可以捕获任意异常。
4.异常捕获完整语法
try:
# 尝试执行的代码
pass
except 错误类型1:
# 针对错误类型1,对应的代码处理
pass
except (错误类型2,错误类型3):
# 针对错误类型2和错误类型3对应的代码处理
pass
except Exception as result:
# 打印错误信息
print(result)
else:
# 没有异常才会执行的代码
pass
finally:
# 无论是否有异常,都会执行的代码
pass
说明:else是一个可选的子句,必须放在所有except后面,这个子句将在try子句没有发生任何异常时执行。另外还有一个finally子句,表示无论try和except的子句执行情况,finally子句都会执行。
5.异常的传递
异常的传递:当函数/方法执行出现异常时,会将异常传递给函数/方法的调用一方。如果传递到主程序,仍然没有异常处理,则程序会终止。
def demo01():
return int(input("请输入一个整数:")) def demo02():
return demo01() try:
print(demo02())
except ValueError:
print("请输入正确的整数")
except Exception as result:
print("未知错误 %s" % result)
6.抛出raise异常
在实际的开发中,除了代码执行出错Python解释器会抛出异常外,还可以根据业务需求,主动抛出异常。
在开发时,如果业务需求希望抛出异常,可以创建一个Exception的对象,然后使用raise关键字抛出异常对象。
def input_password():
password = input("请输入密码:")
if len(password) > 8:
return password
exp = Exception("密码长度小于8位")
raise exp
try:
user_password = input_password()
print(user_password)
except Exception as result:
print("存在错误 %s" % result)
------输出结果------
请输入密码:123456
存在错误 密码长度小于8位
第八篇 Python异常的更多相关文章
- 【Python之路】第八篇--Python基础之网络编程
Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- Python之路(第八篇)Python内置函数、zip()、max()、min()
一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算,如果全部都是true,就返回true, 但是如果是空字符串.空列表也返回t ...
- 第八篇Python基本数据类型之列表、元组与字典
列表 写在最前,必须要会的:append(),extend(),insert(),索引,切片,循环 list 是一个类,是个对象 列表用 方括号[]括起来的,[]内以逗号分割每个元素,列表中的元素可 ...
- Python之路【第十八篇】:Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
- Python之路【第八篇】:堡垒机实例以及数据库操作
Python之路[第八篇]:堡垒机实例以及数据库操作 堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient ...
- 第八篇 :微信公众平台开发实战Java版之如何网页授权获取用户基本信息
第一部分:微信授权获取基本信息的介绍 我们首先来看看官方的文档怎么说: 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域 ...
- 【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航
原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解> 系列文章目录导航 ——通过知识共享树立个人 ...
- Flask最强攻略 - 跟DragonFire学Flask - 第八篇 实例化Flask的参数 及 对app的配置
Flask 是一个非常灵活且短小精干的web框架 , 那么灵活性从什么地方体现呢? 有一个神奇的东西叫 Flask配置 , 这个东西怎么用呢? 它能给我们带来怎么样的方便呢? 首先展示一下: from ...
- 第五篇.python进阶
目录 第五篇.python进阶 1. 异常处理 2. 数字类型内置方法 2.定义: 3.常用操作+内置方法: 4.存一个值or多个值: 5.有序or无序: 6.可变和不可变 1.用途: 2.定义: 3 ...
随机推荐
- Secure CRT修改文件夹的颜色
secureCRT有一个很大的问题是,如果设置Emulation Terminal 为Linux模式,则ls的时候,目录的蓝色跟背景的黑色非常接近,很难看清楚,修改办法 option->Glob ...
- python开发socket套接字:套接字&通信循环&链接循环&模拟远程命令
一,套接字 先从服务器端说起.服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接.在这时如果有个客户端初始化一个Socket ...
- Python Twisted系列教程13:使用Deferred新功能实现新客户端
作者:dave@http://krondo.com/deferred-all-the-way-down/ 译者:杨晓伟(采用意译) 你可以从这里从头阅读这个系列. 介绍 回忆下第10部分中的客户端5 ...
- Oracle T4-2 使用ILOM CLI升级Firmware
简单记录一下使用命令行升级Firmware的过程. 升级前版本 -> version SP firmware 3.2.1.8.a SP firmware build number: 88456 ...
- leetcode824
class Solution { public: void SplitString(const string& s, vector<string>& v, const st ...
- delphi OleVariant转换RecordSet
delphi OleVariant转换RecordSet uses Data.Win.ADODB; function varToRecordSet( parms : OleVariant ) : Da ...
- VxWorks多任务功能
http://blog.chinaunix.net/uid-23741326-id-84935.html VxWorks的任务有优先级的概念,其任务调度也是基于优先级考虑的,是抢占式的,VxWorks ...
- Biorhythms(中国剩余定理(模板题))
Description Some people believe that there are three cycles in a person's life that start the day he ...
- 将.sql文件导入powerdesigner的实现方法详解
将.sql文件导入powerdesigner的步骤是本文我们主要要介绍的内容,步骤如下: 第一步:将要导入的库的所有表的表结构(不要表数据,只要表结构)导出成一个.sql文件. 第二步:在powerd ...
- 使用alias让命令行更便捷
在linux命令行上调试程序,经常是这样子做: $ ps x | grep sceneserver pts/ S+ : grep sceneserver ? Ssl : ./sceneserver/s ...