Python——异常处理模块

Python——异常处理模块,第1张

异常类

常见的异常

异常名称   描述
BaseException    所有异常的基类
SystemExit    解释器请求退出
KeyboardInterrupt    用户中断执行(通常是输入^C)
Exception    常规错误的基类
StopIteration    迭代器没有更多的值
GeneratorExit    生成器(generator)发生异常来通知退出
SystemExit   Python 解释器请求退出
StandardError    所有的内建标准异常的基类
ArithmeticError所有数值计算错误的基类
FloatingPointError浮点计算错误
OverflowError数值运算超出最大限制
ZeroDivisionError除(或取模)零 (所有数据类型)
AssertionError断言语句失败
AttributeError  对象没有这个属性
EOFError没有内建输入,到达EOF 标记
EnvironmentError *** 作系统错误的基类
IOError 输入/输出 *** 作失败
 OSError  *** 作系统错误
WindowsError系统调用失败
ImportError导入模块/对象失败
KeyboardInterrupt用户中断执行(通常是输入^C)
LookupError 无效数据查询的基类
IndexError 序列中没有没有此索引(index)【越界】
  KeyError映射中没有这个键
MemoryError内存溢出错误(对于Python 解释器不是致命的)
NameError未声明/初始化对象 (没有属性)
UnboundLocalError 访问未初始化的本地变量
ReferenceError弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError 一般的运行时错误
NotImplementedError 尚未实现的方法
SyntaxError Python 语法错误
IndentationError缩进错误
TabError ab 和空格混用
SystemError一般的解释器系统错误
TypeError对类型无效的 *** 作
ValueError  传入无效的参数
 UnicodeErrorUnicode 相关的错误
UnicodeDecodeErrorUnicode 解码时的错误
UnicodeEncodeErrorUnicode 编码时错误
UnicodeTranslateErrorUnicode 转换时错误
Warning警告的基类
DeprecationWarning关于被弃用的特征的警告
FutureWarning关于构造将来语义会有改变的警告
OverflowWarning旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning关于特性将会被废弃的警告
RuntimeWarning可疑的运行时行为(runtime behavior)的警告
SyntaxWarning 可疑的语法的警告
UserWarning    用户代码生成的警告
异常处理
try:
    f=open("note.txt","r")
    content =f.readlines()
    for line in content:
        print(line)
except:
    print("打开的文件必须存在!")

 可输出异常的类型进行查看

try:
    age=int(input("请输入你的年龄:"))
    print("你的年龄是:%d."%age)
except Exception as result:
    print("捕获到异常:\n%s"%result)
else:
    print("程序正常运行,没有异常!")
finally:
    print("必须来这里")
捕获多个异常
try:
    a=int(input("请输入一个整型除数:"))
    b=int(input("请输入一个整型被除数:"))
    division=a/b
except ValueError:
    print("输入的数据类型非整型,请更改")
except ZeroDivisionError:
    print("分母不能为零,请另取值!")
else:
    print("a与b相除输出的结果:%f"%division)
finally:
    print("实验结束!")

可以使用同一个处理方式

try:
    a=int(input("请输入一个整型除数:"))
    b=int(input("请输入一个整型被除数:"))
    division=a/b
except (ValueError,ZeroDivisionError):
    print("输入的错误,请更改")
else:
    print("a与b相除输出的结果:%f"%division)
finally:
    print("实验结束!")
异常处理在函数中的常用使用情况。

第一种,异常处理在正常使用时,如下:

try:
#语句1,要做什么事情。
except:
#语句2,发生异常时执行,可以有多个except
else:
#语句3,没有异常时执行。
flnally:
#语句4,一定执行。

第二种,异常处理在函数中使用时,如下:

def f(a):
    try:
        print(“1/a”)
        return 1/a
    except:
        print(“except”)
        return except
    else:
        print(“else”)
        return else
    finally:
        print(“finally”)
        return finally

else与finally是可选的,不一定必须出现;else语句如果存在,必须以except语句为前提。

抛出异常  raise语句

使用类名引发异常

raise TypeError

使用类对象名

type=TypeError

raise type

向外传递异常

try:

        raise TypeError

except :

        print("你的输入错误")

指定异常的描述信息

raise TypeError("类型不匹配")

 异常引发异常

try:
    list=[1,2,3]
    print(list[4])
except Exception as message:
    raise IndexError("列表索引超出范围")from message
assert语句

assert 逻辑表达式,data

assert语句又称作断言,指的是期望用户满足指定的条件。

try:
    n=input("请输入一个数字:")
    assert n.isdigit(),"只能输入数字"
    print("你输入的是:",n)
except Exception as ex:
    print("发现错误:",ex)
自定义异常

日常开发中,当系统提供的异常类型不能满足开发的需求时,就需要自己创建一个新的异常类来拥有自己的异常。

自定义异常类继承自 Exception 类,可以直接继承,或者间接继承。

# 自定义异常类 MyError ,继承普通异常基类 Exception
class MyError(Exception):
        def __init__(self, value):
            self.value = value

        def __str__(self):
            return repr(self.value)

自定义异常类的使用
# 自定义异常类 MyError ,继承普通异常基类 Exception
class MyError(Exception):
        def __init__(self, value):
            self.value = value

        def __str__(self):
            return repr(self.value)


try:
    num = input("请输入数字:")
    if not num.isdigit():  # 判断输入的是否是数字
        raise MyError(num)  # 输入的如果不是数字,手动指定抛出异常
except MyError as e:
    print("MyError:请输入数字。您输入的是:", e.value)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/941871.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-17
下一篇 2022-05-17

发表评论

登录后才能评论

评论列表(0条)

保存