异常

一.认识异常

常见的异常情况包括:

语法错误(SyntaxError):由于程序编写错误导致无法正确解析的错误。例如,缺少冒号、括号不匹配等。

名称错误(NameError):引用了未定义的变量或函数名。例如,使用未声明的变量。

类型错误(TypeError):对象的类型不符合预期要求。例如,对不支持的数据类型执行操作。

值错误(ValueError):对象的值不符合预期要求。例如,传递给函数的参数超出了有效范围。

索引错误(IndexError):访问序列时使用了无效的索引值。例如,超出了列表的索引范围。

键错误(KeyError):在字典中使用了不存在的键。例如,访问字典中不存在的键。

文件错误(FileNotFoundError):尝试打开或读取不存在的文件。

异常处理错误(Exception Handling Error):在处理异常时出现错误。例如,处理异常的代码块中出现了另一个异常。

二.异常处理

异常处理是一种机制,用于捕获并处理程序运行时可能出现的异常情况,以避免程序崩溃或产生不可预料的结果。在Python中,可以使用try-except语句来实现异常处理。

一般搭配try···except使用 当发生异常就会跳转到except

try:
    # 可能会引发异常的代码块
    # ...
except ExceptionType1:
    # 处理特定类型的异常
    # ...
except ExceptionType2:
    # 处理另一种类型的异常
    # ...
else:
    # 当没有异常发生时执行的代码(可选)
    # ...
finally:
    # 无论是否发生异常都会执行的代码(可选)
    # ...
try:
    # 尝试打开一个文件
    file = open("example.txt", "r")
    # 尝试进行文件的读取操作
    content = file.read()
    # 关闭文件
    file.close()
except FileNotFoundError:#文件没找到则会执行
    print("文件未找到")
except IOError:
    print("读取文件发生错误")
else:#如果没有发生异常,将会执行else代码块。
    print(content)
finally:#不论有没有发生异常,都会执行
    print("结束异常处理")

raise是Python中用于手动触发异常的关键字,可以手动抛出异常

#自己抛出异常
name = input('请输入一个整数')
try:
    value = int(name)  # 尝试将输入的字符串转换为整数
except ValueError:
    raise NameError('这是名称错误')
else:
    if name != str(value):
        raise NameError('这是名称错误')
    elif name ==str(value):
        print('输入成功')
    else:
        raise ValueError('这是值错误')

这是自定义了两个异常

class MyException1(Exception):
    pass

class MyException2(Exception):
    pass

# 抛出异常
def function():
    # 抛出自定义异常1
    raise MyException1("自定义异常1被触发")

def another_function():
    # 抛出自定义异常2
    raise MyException2("自定义异常2被触发")

# 捕获并处理异常
try:
    function()
except MyException1 as e1:
    print(e1)

try:
    another_function()
except MyException2 as e2:
    print(e2)

python中断言异常

在Python中,断言的语法是使用assert关键字后跟一个表达式。

如果该表达式为真,则程序会继续执行;如果该表达式为假,则会引发AssertionError异常,并中断程序的执行

1.强制要求条件满足 断言会用到assert ,注意assert表达式返回True不报错,表达式返回False报错,报AssertionError

def my_list(a, b):
#这是assert的语法格式
   assert b != 0, "除数不能为0"  # 自定义报错内容,
   return a / b

result = my_list(10, 2)
print(result)  # 输出:5.0
#如果不满足条件,则会触发断言异常,如:
result = my_list(10, 0)#报错AssertionError: 除数不能为0
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、简介 Python最强大的结构之一就是它的异常处理能力,所有的标准异常都使用类来实现,都是基类Exceptio...
    随风化作雨阅读 3,151评论 0 1
  • 一、错误和异常 1、错误 从软件方面来讲,错误通常是语法或逻辑上的。语法错误会导致程序代码不能被解释器解释,这些错...
    常大鹏阅读 1,653评论 0 6
  • 该笔记是根据慕课网中相关视频学习记录。视频地址:https://www.imooc.com/learn/457 错...
    北游_阅读 984评论 0 0
  • 希望大家喜欢,点赞哦 Python错误和异常处理概略 一、错误和异常的概念 1.1 错误:代码运行前的语法或者逻辑...
    Gaolex阅读 2,678评论 0 4
  • 程序员的一生中,错误几乎每天都在发生。在过去的一个时期, 错误要么对程序(可能还有机器)是致命的,要么产生一大堆无...
    妄心xyx阅读 4,117评论 0 23

友情链接更多精彩内容