IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python异常 -> 正文阅读

[Python知识库]python异常

目录

1. 常见异常类:

2.异常处理

try 语句按照如下方式工作;

finally的应用思路举例:

3. 抛出异常

?

?4.断言 assert:

5.自定义异常


?

?


1. 常见异常类:


? ?1)NameError:使用未定义变量
? ?2)ZeroDivisionError:分母为零
? ?3)SyntaxError:语法错误
? ?4)IndexError:索引超出范围
? ?5)KeyError:引用的字典键值错误
? ?6)FileNotFoundError:找不到文件
? ?7)AttributeError:类中没有属性
? ?8)AssertionError:断言异常?

>>> 10 * (1/0)             # 0 不能作为除数,触发异常
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
ZeroDivisionError: division by zero
>>> 4 + spam*3             # spam 未定义,触发异常
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
NameError: name 'spam' is not defined
>>> '2' + 2               # int 不能与 str 相加,触发异常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str

2.异常处理

a = [1,2,3]
print(a[6])  #如何避免此处的异常影响全局
print('zard')
"""
  pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
  File "D:\pycharm2020\PyCharm 2020.1\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "D:/python_files/python_fiew/do_yicahng_01.py", line 2, in <module>
    print(a[6])
IndexError: list index out of range
"""

?

try 语句按照如下方式工作;

  • 首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)。

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

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

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

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

? ? ?处理程序将只针对对应的 try 子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。

number = int(input("请输入您要检索的索引数字:"))
a = [1,2,3]
try:
    print(a[number])
except:  #捕获异常
    print("存在异常时,此句会被执行!")
else:
    print('无异常,故此句会被执行。')
finally:
    print("无论是否有异常,此句都会被执行!")
print('zard')

"""
PyDev console: starting.
Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] on win32
runfile('D:/python_files/python_fiew/do_yicahng_01.py', wdir='D:/python_files/python_fiew')
请输入您要检索的索引数字:>? 6
存在异常时,此句会被执行!
无论是否有异常,此句都会被执行!
zard
"""

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

except (RuntimeError, TypeError, NameError):
    pass

要能捕获所有异常,且可以打印出对应异常的信息,则利用所有异常的父类Exception:?

number = 6
a = [1,2,3]
try:
    print(a[number])
except Exception as e:  #捕获异常,将Exception命名为e
    print(e) #打印异常信息
else:
    print('无异常,故此句会被执行。')
finally:
    print("无论是否有异常,此句都会被执行!")
print('zard')

number = 6
a = [1,2,3]
try:
    print(a[number])
except Exception as e:  #捕获异常,将Exception命名为e
    print('Exception') #打印异常信息

except IndexError as i:
    print('IndexError')
finally:
    print("无论是否有异常,此句都会被执行!")
print('zard')
"""
PyDev console: starting.
Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] on win32
runfile('D:/python_files/python_fiew/do_yicahng_01.py', wdir='D:/python_files/python_fiew')
Exception
无论是否有异常,此句都会被执行!
zard
"""
number = 6
a = [1,2,3]
try:
    print(a[number])
except IndexError as i:
    print('IndexError')
    
except Exception as e:  #捕获异常,将Exception命名为e
    print('Exception') #打印异常信息
finally:
    print("无论是否有异常,此句都会被执行!")
print('zard')

finally的应用思路举例:

a = [1,2,3]
try:
    f = open('file.log')  
    print(a[6])
except Exception as fnf_error:
        print(fnf_error)    
finally:
    f.close() #finally可用于释放文件操作

3. 抛出异常

def asd(age):
    if age < 0 or age >200:
        raise Exception("年龄太大或太小")
    print(age)

try:
    asd(231)
except:  #捕获异常
    pass

?4.断言 assert:

其优点在于将上述的抛出异常和捕获异常操作变成一步:

age = 0  
assert age < 0 or age > 200,"年龄不合法"

5.自定义异常

#自定义异常
#在继承父类Exception的基础上再自定义异常。相当于往Exception中添加新的异常
class AgeError(Exception):
    def __init__(self,info):
        self.info = info
    def show(self):
        print(self.info)
ageError = AgeError("年龄异常!") #实例化

age = -1
if age < 0:
    raise ageError

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 13:57:17  更:2022-01-08 13:57:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:25:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码