Skip to content

异常处理

try...except语法

  • 通过try关键字吧所有可能出现异常的代码包含在内,当程序出现异常时则进入except中,如果未出现异常,这不执行except中的内容
  • else关键字表示若try中代码未出现异常时则进入else中继续运行else里面的代码块,为了将代码更好地进行串联
  • finally指无论try中代码是否报错,最后都会执行finally代码块
  • 异常处理是为了提高代码健壮性
py
while True:
    try:
        a = int(input("请输入一个数字:"))
        if a == 1:
            print("这是数字1")
        elif a == 2:
            print("这是数字2")
        elif a == 3:
            break

    except:
        print("不是数字")

    else:
        print("这是else部分")

    finally:
        print("这是finally部分")

Except类

  • 如果程序中有指定明确的error对象,那么程序报错非指定error时就不会进入except,除非有指定异常的父类Exception
  • 若不想处理某类异常时可使用raise关键字将异常继续抛出,raise还可以将自定义异常抛出
  • 如果想看到异常的详细信息,可使用traceback.print_exc()来实现
  • as关键字指给对象取别名,后续可直接调用别名
py
while True:
    try:
        a = int(input("请输入一个数字:"))
        if a == 1:
            print("这是数字1")
        elif a == 2:
            c = a / 0
        elif a == 3:
            li = [1, 2, 3]
            print(li[10])
        elif a == 100:  # 将自定义异常抛出
          raise
        elif a == 4:
            break

    except ValueError as ve:
        print("ValueError错误类型")
    except ZeroDivisionError as zd:
        raise
    except IndexError as ie:
        print("IndexError错误类型")
    except Exception as e:
        print("其他错误类型")

如果要添加异常的文字信息,可以调用__str__函数来实现文字的内容定义。

python
# 自定义异常类的基本使用
class MyException(Exception):
  # 构造函数
  def __init__(self):
    # 这是构造函数
    pass
  
  # 定义异常的文字信息:要返回异常的信息内容,记得用return
  def __str__(self):
    return '这里是异常的文字信息'