概述
Python基础(十)
- Python基础(十)
- 1、错误与异常处理
- 1.1、异常的概念
- 1.2、语法结构
- 1.3、try....except
- 1. 捕获指定的异常
- 2. 捕获多个异常
- 3. 捕获所有异常
- 1.4、else
- 1.5、finally
- 1.6、raise
- 1.7、自定义异常
- 1. 定义自定义异常
- 2. 抛出捕获自定义异常
- 1.8、异常讲解
- 1. 异常的捕获
- 2. 捕获多个或通用异常
- 3. 异常的抛出机制
- 1.9、常见的异常
- 2、小结
Python基础(十)
1、错误与异常处理
1.1、异常的概念
有时候代码存在缺陷,在执行程序的时候,执行到错误代码的时候,程序直接停止或抛出报错, 这是因为Python检测到一个错误时, 解释器就无法继续执行了, 出现了错误的提示,这样的现象就是"异常"。
1.2、语法结构
最基础的捕获可以直包含try与except对异常进行处理,else与finally可以按实际情况添加
try:
< 代码块 >
except < 异常名1 >:
print('异常说明1')
except < 异常名2 >:
print('异常说明2')
else:
< 代码块 > # try语句中没有异常则执行此段代码
finally:
print("finally") # 无论是否发生异常都将会执行最后的代码
1.3、try…except
1. 捕获指定的异常
try:
print(a)
except NameError as msg:
print(msg)
print("666")
2. 捕获多个异常
try:
fp = open("123.txt","r") # 程序出现异常,不会继续执行后面的代码
print("hello world")
fp.close()
except GeneratorExit:
print("异常说明:GeneratorExit")
except FloatingPointError:
print("异常说明:FloatingPointError")
3. 捕获所有异常
try:
x = 3 / 0 # 程序出现异常,不会继续执行后面的代码
print("hello world")
except:
print("异常说明:分母不能为0")
1.4、else
如果判断在代码执行过程中没有异常的情况下执行其他的代码块,就可以使用else语句。
try:
print("aa")
except NameError as msg:
print(msg)
except Exception as msg:
print(msg)
else:
print("无错")
print("666")
1.5、finally
无论什么情况都将会执行finally里的代码块
try:
print(aa)
except NameError as msg:
print(msg)
except Exception as msg:
print(msg)
else:
print("无错")
finally:
print("finally")
print("666")
1.6、raise
主动触发异常
try:
raise Exception("raise Exception!") # 触发异常后,后面的代码就不会再执行
print("hello world")
except Exception as e:
print(e)
finally:
print("OK")
1.7、自定义异常
在开发的过程中可能会出现现有的异常类型不满足个人的开发需求,这是就可以自定义异常。
自定义异常,都要直接或间接继承Error或Exception类。
由开发者主动抛出自定义异常,在python中使用raise关键字。
1. 定义自定义异常
- 定义一个类,直接或间接继承Error或Exception类
- 根据需求编写init方法
- 编写str方法,显示出错信息。以便于后期调整。
示例:
class MyException(Exception):
def __init__(self, leng):
self.leng = leng
def __str__(self):
print("长度是" + str(self.leng) + ",超过长度了")
2. 抛出捕获自定义异常
class MyException(Exception):
def __init__(self, leng):
self.leng = leng
pass
def __str__(self):
return ("长度是" + str(self.leng) + ",超过长度了")
pass
pass
def name_Test():
name = input("your name:")
try:
if len(name) > 4:
raise MyException(len(name)) # 抛出异常很简单,使用raise即可,但是没有处理,即捕捉
else:
print(name)
except MyException as msg:
print(msg)
finally:
print("okk")
# 调用函数,执行
name_Test()
print("结束")
1.8、异常讲解
1. 异常的捕获
- 将可能出错的代码放到try里面,except可以指定类型捕获异常。
- except里面的代码是捕获到异常时执行,将错误捕获,这样异常就不会导致解释器处理异常而导致整个程序崩溃。
2. 捕获多个或通用异常
- 一个try块可以捕获多个异常,每一个except可以代表一种异常。
- except如果指定了异常名就只会捕捉指定的异常,如果没有指定就会捕捉全部的异常。
- 不指定捕获异常名或指定为 Exception都可以捕获到全部的异常。
3. 异常的抛出机制
- 在运行时发生异常解释器会查找相应的异常捕获类型,如果在当前函数里面没有找到的话,它会将异常传递给上层的调用函数,看能否处理如果在最外层没有找到的话,解释器就会异常退出
- 所以说当有多层嵌套函数时,可以在最顶层捕获其余层的错误类型
1.9、常见的异常
BaseException — 所有异常的基类
SystemExit — 解释器请求退出
KeyboardInterrupt — 用户中断执行(通常是输入^C)
Exception — 常规错误的基类
StopIteration — 迭代器没有更多的值
GeneratorExit — 生成器(generator)发生异常来通知退出
StandardError — 所有的内建标准异常的基类
ArithmeticError — 所有数值计算错误的基类
FloatingPointError — 浮点计算错误
OverflowError — 数值运算超出最大限制
ZeroDivisionError — 除(或取模)零 (所有数据类型)
AssertionError — 断言语句失败
AttributeError — 对象没有这个属性
EOFError — 没有内建输入,到达EOF 标记
EnvironmentError — 操作系统错误的基类
IOError — 输入/输出操作失败
OSError — 操作系统错误
WindowsError — 系统调用失败
ImportError — 导入模块/对象失败
LookupError — 无效数据查询的基类
IndexError — 列中没有此索引(index) 下标越界
KeyError — 映射中没有这个键
MemoryError — 内存溢出错误(对于Python 解释器不是致命的)
NameError — 未声明/初始化对象 (没有属性)
UnboundLocalError — 访问未初始化的本地变量
ReferenceError — 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError — 一般的运行时错误
NotImplementedError — 尚未实现的方法
SyntaxError — Python 语法错误
IndentationError — 缩进错误
TabError — Tab 和空格混用
SystemError — 一般的解释器系统错误
TypeError — 对类型无效的操作
ValueError — 传入无效的参数
UnicodeError — Unicode 相关的错误
UnicodeDecodeError — Unicode 解码时的错误
UnicodeEncodeError — Unicode 编码时错误
UnicodeTranslateError — Unicode 转换时错误
Warning — 警告的基类
DeprecationWarning — 关于被弃用的特征的警告
FutureWarning — 关于构造将来语义会有改变的警告
OverflowWarning — 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning — 关于特性将会被废弃的警告
RuntimeWarning — 可疑的运行时行为(runtime behavior)的警告
SyntaxWarning — 可疑的语法的警告
UserWarning — 用户代码生成的警告
2、小结
- 错误与异常处理
最后
以上就是害怕小兔子为你收集整理的Python基础(十)异常处理Python基础(十)1、错误与异常处理2、小结的全部内容,希望文章能够帮你解决Python基础(十)异常处理Python基础(十)1、错误与异常处理2、小结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复