什么是异常?

Python无法正常处理程序时就会发生一个异常,这时Python就会抛出一个对象,表示这是一个错误。

必须处理异常,否则程序可能会停止运行,或者出现异常现象。

:4/0就会抛出异常,因为除数不可以为0。
:a=[1,2,3],访问a[10]就会抛出异常,因为下标超出了范围(0~2)。

示例:

a=[1,2,3]
print(a[10])

抛出异常:


常见异常

ImportError           # 引入模块错误,大部分是路径问题或名称错误。
ModuleNotFoundError # 模块不存在
IOError # 输入输出异常,大部分是无法打开文件
FileNotFoundError # 文件不存在
KeyError # 访问字典里不存在的键
ZeroDivisionError # 除(或取模)零
NameError # 变量未定义
TypeError # 实参的类型与要求的不符(如time.sleep("1"))
ValueError # 实参的值与要求的不符,即使类型正确(如int("one"))
IndexError # 下标越界

小贴士:

Python中存在许许多多的异常,具体情况具体处理。


捕获并处理异常

程序抛出异常后,可能会停止运行。因为程序毕竟是程序,不够智能,并不会处理它们。

程序会根据不同的情况,抛出不同的异常。

需要捕获相应的异常并进行处理,程序才会正常的运行下去。

综上所述,提前用代码告知Pyton,出现各种异常该如何处理。

try:
f=open("hello.txt","r")
except FileNotFoundError as fileNotFoundError:
print("文件打开失败:",fileNotFoundError)
except: #其他错误
print("其他错误")

解释:

  • 在try语句块中执行可能发生错误的代码
  • 使用except来捕获异常
  • FileNotFoundError是异常名,表示文件不存在
  • fileNotFoundError为对象名,可自定义,通过此对象来处理异常
  • 当文件不存在,异常就会被fileNotFoundError捕获
  • 出现其他错误,就会输出:其他错误

手动抛出异常

手动抛出异常,再捕获异常,进行处理。
如:需要用户输入数字,用户却输入了字符

age=input("请输入年龄:")
if not age.isdigit():
raise ValueError("值错误")

若发生异常:

若没有发生异常:

解释:

  • 使用关键字raise抛出异常
  • 抛出异常ValueError
  • 上例没有对异常进行捕获处理,只是抛出。
  • 有些异常发生时,程序不会停止运行,如ValueError(退出码为0)
手动抛出异常,并捕获、处理异常:
try:
age=input("请输入年龄:")
if not age.isdigit():
raise ValueError("值错误")
except ValueError as valueError:
print(valueError)
exit(1)

若发生异常:

若没有发生异常:


自定义异常

  • 所有的异常都是Exception或Exception的子类
  • 继承Exception,成为它的子类,即为自定义异常。
class MyError(Exception):       #继承了Exception
def __init__(self,value): #构造函数
self.value=value
def __str__(self): #强制转换
return str(self.value)
try:
raise MyError("我的错误") #抛出异常
except MyError as myError: #捕获异常
print(myError) #处理异常

try-else

  • 当try块中没有发生异常,就会执行else语句块
try:
f=open("hello.txt","r")
except FileNotFoundError as fileNotFoundError:
print(fileNotFoundError)
else:
print("没有发生错误")

try-finally

  • 无论是否发生异常都将执行finally语句块
try:
f=open("hello.txt","r")
except FileNotFoundError as fileNotFoundError:
print(fileNotFoundError)
finally:
print("无论是否异常,都会输出")

07-Python异常处理的更多相关文章

  1. python异常处理(基础)

    之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/fnng/archive/2013/0 ...

  2. Python异常处理 分类: python Raspberry Pi 服务器搭建 2015-04-01 13:22 172人阅读 评论(0) 收藏

    一个程序要保持稳定运行必须要有异常处理,本文将简单介绍Python中的try-except..异常处理语句的使用. 该种异常处理语法的规则是: 执行try下的语句,如果引发异常,则执行过程会跳到第一个 ...

  3. Python 异常处理--raise函数用法

    raise语句手工引发一个异常: "raise" [expression ["," expression ["," expression]] ...

  4. [Python学习笔记][第八章Python异常处理结构与程序调试]

    1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...

  5. python异常处理try,except,else,finally,raise

    先看下else的使用: try: ... exception: ... else: ... 只有在try中没有发生任何异常,所有代码完全成功的情况下才会转入else 再看下finally: final ...

  6. Python 异常处理

    Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. 断言 ...

  7. python异常处理的哲学

    所谓异常指的是程序的执行出现了非预期行为,就好比现实中的做一件事过程中总会出现一些意外的事.异常的处理是跨越编程语言的,和具体的编程细节相比,程序执行异常的处理更像是哲学.限于认知能力和经验所限,不可 ...

  8. Python异常处理总结

    一.何谓异常处理 在我们调试程序时,经常不可避免地出现意料之外的情况,导致程序不得不停止运行,然后提示大堆提示信息,大多是这种情况都是由异常引起的.异常的出现一方面是因为写代码时粗心导致的语法错误,这 ...

  9. python异常处理与断言以及日志模块

    python异常处理与断言 目录: 1.异常处理 2.断言(assert) 3.日志模块(logging) 4.修改之前的车票信息查询,把日志模块.异常处理加进去 1.异常处理 代码如下: 语法: t ...

  10. python 异常处理函数--raise

    Python 异常处理--raise函数用法 在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称.异常名称标识出具体的类: Python异常处理是那些类的对象 ...

随机推荐

  1. 记录一个HttpClient超时连接配置不生效的问题排查过程

    现象 首先有一个被服务由于内存有限,导致巨卡.导致调用他的服务出现线程阻塞.jstack打印线程池如下所示: 开始排查解决问题 第一步:检查代码看是否超时设置是否正确,因为感觉超时设置正确不可能阻塞. ...

  2. Python数据分析 DataFrame 笔记

    08,DataFrame创建 DataFrame是一个[表格型]的数据结构,可以看做是[由Series组成的字典](共用同一个索引).DataFrame由按一定顺序排列的多列数据组成.设计初衷是将Se ...

  3. 一个开源轻量级的C#代码格式化工具(支持VS和VS Code)

    前言 C#代码格式化工具除了ReSharper和CodeMaid,还有一款由.NET开源.免费(MIT License).轻量级的C#语言代码格式化工具:CSharpier. 工具介绍 CSharpi ...

  4. 从零开始:Django项目的创建与配置指南

    title: 从零开始:Django项目的创建与配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 后端开发 tag ...

  5. 【GUI软件】小红书按关键词采集笔记详情,支持多个关键词,含笔记正文、转评赞藏等

    目录 一.背景介绍 1.1 爬取目标 1.2 演示视频 1.3 软件说明 二.代码讲解 2.1 爬虫采集-搜索接口 2.2 爬虫采集-详情接口 2.3 cookie说明 2.4 软件界面模块 2.5 ...

  6. 【爬虫+数据清洗+可视化分析】Python舆情分析哔哩哔哩"狂飙"的评论

    目录 一.背景介绍 二.爬虫代码 2.1 展示爬取结果 2.2 爬虫代码讲解 三.可视化代码 3.1 读取数据 3.2 数据清洗 3.3 可视化 3.3.1 IP属地分析-柱形图 3.3.2 评论时间 ...

  7. postgresql 主键id配序列

    一.手动创建序列 1.表格id字段,设置主键(PRIMARY KEY),类型为int4 2.创建序列 CREATE SEQUENCE public.moni_wzhour_warn_id_seq IN ...

  8. Teamviewer 再次涨价,太贵了,有没有平替软件?

    今天打开 Teamviewer 网站,吓一跳,商业版基础款价格直接翻倍. 作为行业龙头,又是德国产品,Teamviewer 一直保持着高价格的特色.这两年 Teamviewer 的价格还逐年上涨,从每 ...

  9. 数据结构单向链表——找到并输出倒数第k个结点的数据

    /********************************************************************************************** * fu ...

  10. 4G 信令中的 PCO 字段

    目录 文章目录 目录 Protocol Configuration Option Protocol Configuration Option PCO(Protocol Configuration Op ...