Python异常处理

本文详细介绍了Python中的异常处理机制,包括异常的介绍、作用、语法以及使用方法。从基本的try-except语句到处理多种异常类型,再到try-finally确保代码段的执行,深入探讨了异常的传递和自定义异常的创建。通过实例解析,帮助读者理解和掌握Python异常处理的关键技巧。
摘要由CSDN通过智能技术生成

1、异常介绍

  异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
  一般情况下,在Python无法正常处理程序时就会发生一个异常。
  异常是Python对象,表示一个错误。
  当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
  当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"。

2、异常处理

1、异常处理的作用

  捕捉异常可以使用try/except语句。
  try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
  如果你不想在异常发生时结束你的程序,只需在try里捕获它。

2、异常处理的语法

  语法:
    try:
      <语句> #运行别的代码
    except <名字>:
      <语句> #如果在try部份引发了’name’异常
    else:
      <语句> #如果没有异常发生

  例子:
    方法一
    方法二
在这里插入图片描述

3、使用except而不带任何异常类型

  语法:
    try:
      <语句> #运行别的代码
    except <名字>:
      <语句> #如果在try部份引发了’name’异常
    else:
      <语句> #如果没有异常发生

  例子:
在这里插入图片描述

  注意:以上方式try-except语句捕获所有发生的异常。但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息。因为它捕获所有的异常。

4、使用except而带多种异常类型

  语法:
    try:
      <语句> #运行别的代码
    except (Exception1[, Exception2[,…ExceptionN]]]) as <名字>:
      <语句> #如果在try部份引发了’name’异常
    else:
      <语句> #如果没有异常发生

  例子:
在这里插入图片描述

5、try-finally 语句

  方法:try-finally 语句无论是否发生异常都将执行最后的代码

  语法:
    try:
      <语句>
    finally:
      <语句> #退出try时总会执行

  例子:
在这里插入图片描述
  注意:
    当在try块中抛出一个异常,立即执行finally块代码。
    finally块中的所有语句执行后,异常被再次触发,并执行except块代码。
    参数的内容不同于异常

6、异常的传递

  例子:
在这里插入图片描述

def func1():
    print("---func1--1---")
    print(num)
    print("---func1--2---")
# def func2():
#     print("--func2--1---")
#     func1()
#     print("--func2--2---")
def func3():
    try:
        print("---func3--1---")
        func1()
        print("--func3--2----")
    except Exception as result:
        print(result)
        print("--func3---3---")
func3()
#func2()

7、异常触发

  方法:可以使用raise语句自己触发异常

在这里插入图片描述

8、用户自定义异常

  定义:通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式

  例子:
在这里插入图片描述

class ShortInputException(Exception):
def __init__(self, length, atleast):
    self.length = length
    self.atleast = atleast
def main():
    try:
        s = input('请输入 --> ')
        if len(s) < 3:
            # raise引发一个你定义的异常
            raise ShortInputException(len(s), 3)
    except ShortInputException as result:#x这个变量被绑定到了错误的实例
        print('ShortInputException: 输入的长度是 %d,长度至少应是 %d'% (result.length, result.atleast))
    else:
        print('没有异常发生')
main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值