博客
关于我
Part 2异常和错误
阅读量:794 次
发布时间:2023-02-26

本文共 1987 字,大约阅读时间需要 6 分钟。

异常处理的详细指南

异常是程序运行期间发生的错误信号。在Python中,异常可以帮助我们识别和处理程序运行过程中出现的问题。如果不对异常进行处理,程序可能会终止运行,这对于程序的健壯性和容错性是非常不利的。因此,学习如何处理异常对于任何一个Python程序员来说都是至关重要的。


异常的定义

异常是程序中发生错误时触发的信号。在Python中,异常可以通过raise语句主动触发,也可以在代码运行过程中自动触发。常见的异常类型包括:

  • AttributeError:试图访问一个对象没有的属性。
  • IOError:输入或输出操作失败。
  • IndentationError:代码缩进错误。
  • IndexError:索引越界。
  • ** KeyError**:字典中不存在的键。
  • ** KeyboardInterrupt**:用户按下了终止键。
  • ** NameError**:使用了未被赋予的变量名。
  • ** SyntaxError**:Python语法错误。
  • ** TypeError**:传入了不符合要求的对象类型。
  • ** UnboundLocalError**:试图访问一个未被定义的局部变量。
  • ** ValueError**:传入了一个不符合期望的值。

异常的处理方法

为了避免程序在异常发生时终止,我们需要编写异常处理代码。Python的异常处理语法采用try...except结构,使得程序在异常发生时能够按照预期处理。

1. 基本语法结构

try:    被检测的代码块except:    处理异常的逻辑

2. 捕捉特定异常

如果你只想处理某一种异常,可以使用具体的异常类型:

try:    list = [1, 2, 3]    print(list[4])except IndexError:    print("下标越界")

3. 捕捉所有异常

如果你想处理所有可能的异常,可以使用Exception基类:

try:    list = [1, 2, 3]    print(list[4])except Exception as e:    print(e)

4. 多分支处理

如果需要针对不同异常采取不同的处理方式,可以使用多分支结构:

try:    s = 'abc'    l = [1, 2, 3]except IndexError as e:    print('请重新确定输出的元素')except ValueError as e:    print('不能操作')except Exception:    print('其他错误')

5. 最后一个异常处理

为了确保万无一失,可以在最后加上一个except Exception,以防万一:

try:    s = 'abc'    l = [1, 2, 3]    #print(l[5])except IndexError:    print('请重新确定输出的元素')except ValueError:    print('不能操作')except Exception:    print('其他错误')

异常处理的其他结构

else 块

else块用于在没有异常发生时执行代码:

try:    s = 'abc'    l = [1, 2, 3]except:    print('发生了错误')else:    print('没有发生错误')

finally 块

finally块用于在异常处理或正常执行后都要执行的代码:

try:    s = 'abc'    l = [1, 2, 3]except:    print('发生了错误')finally:    print('执行清理工作')

主动触发异常

有时候,我们需要主动触发异常,以测试程序的异常处理机制。可以使用raise语句:

raise TypeError

自定义异常

如果需要定义自己的异常类型,可以继承BaseException类:

class EvaException(BaseException):    def __init__(self, msg):        self.msg = msg    def __str__(self):        return self.msgtry:    raise EvaException('类型错误')except EvaException as e:    print(e)

总结

异常处理是编写健壮程序的重要技能。通过try...except结构,我们可以捕捉并处理程序运行过程中可能发生的各种错误。无论是处理特定异常,还是捕捉所有异常,都可以通过合理的异常处理逻辑实现。在实际开发中,建议根据具体需求选择合适的异常处理方式,并尽量减少对程序流程的影响。

转载地址:http://htvfk.baihongyu.com/

你可能感兴趣的文章
pandas.read_csv()的详解-ChatGPT4o作答
查看>>
PANDAS.READ_EXCEL()输出‘;溢出错误:日期值超出范围‘;而不存在日期列
查看>>
pandas100个骚操作:再见 for 循环!速度提升315倍!
查看>>
Pandas:如何根据其他列值的条件对列进行求和?
查看>>
Pandas:对给定列求和 DataFrame 行
查看>>
Pandas、groupby 和特定月份的求和
查看>>
Pandas、Matplotlib、Pyecharts数据分析实践
查看>>
Pandas中文官档 ~ 基础用法1
查看>>
Pandas中文官档~基础用法2
查看>>
SpringBoot+Vue+OpenOffice实现文档管理(文档上传、下载、在线预览)
查看>>
Pandas中文官档~基础用法5
查看>>
Pandas中文官档~基础用法6
查看>>
Pandas中的GROUP BY AND SUM不丢失列
查看>>
Pandas中的GROUP BY AND SUM不丢失列
查看>>
Pandas之iloc、loc
查看>>
pandas交换两列
查看>>
pandas介绍-ChatGPT4o作答
查看>>
pandas删除指定列里面内容的行
查看>>
pandas去除Nan值
查看>>
vc++多线程编程
查看>>