博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python异常 Exception
阅读量:6999 次
发布时间:2019-06-27

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

异常 Exception

  什么是错误:

    错误是指由于逻辑或语法等导致一个程序无法正常执行的问题

  什么是异常

    异常是程序出错时标识的一种状态

  作用:

    用于信号,通知上层调用者有错误产生,需要处理

try 语句的两种语法:

  try-except 语句
  try-finally 语句

try-except语句

  语法:

    try:      可能触发异常的语句    except 错误类型1 [as 变量1]:      异常处理语句1    except 错误类型2 [as 变量2]:      异常处理语句2    except (错误类型3,错误类型4) [as 变量3]:      异常处理句块3    ...    except:      其它异常处理语句    else:       未发生异常语句    finally:      最终语句    注: [] 代表其中的内容可以省略    作用:      偿式捕获异常,得到异常通知,将程序由异常流程转为正常流程并继续执行
View Code
  # 此示例示意异常处理语句try-except 的语法和用法  def div_apple(n):    print("%d个苹果你想分给几个人?" % n)    s = input("请输入人数: ")    cnt = int(s) # 可能触发ValueError类型的错误    result = n / cnt # 可能触发ZeroDivistion类型的错误    print('每个人分了', result, '个苹果')  try:    print("开始分苹果")    div_apple(10)    print('分苹果成功!')  except ValueError:    print("分苹果过程中出现错误,分苹果失败!!!")  except ZeroDivisionError:    print("没有人来,苹果被收回,自己吃了!!!")  print("程序正常退出")
View Code
  # 此示例示意异常处理语句try-except 的语法和用法  def div_apple(n):    print("%d个苹果你想分给几个人?" % n)    s = input("请输入人数: ")    cnt = int(s) # 可能触发ValueError类型的错误    result = n / cnt # 可能触发ZeroDivistion类型的错误    print('每个人分了', result, '个苹果')  try:    print("开始分苹果")    div_apple(10)    print('分苹果成功!')  except (ValueError, ZeroDivisionError):    print("分苹果失败,苹果不分了!")  print("程序正常退出")
View Code

try-finally语句

  语法:
    try:
      可能触发异常的语句
    finally:
      最终语句
    说明:
      finally 子句不可以省略一定不存在except 子句
    作用:
      通常用try-finally语句来做触发异常时必须要处理的事情,无论异常是否发生,finally子句都会被执行try-finally 语句不会改变程序的(正常/异常)状态

  # 此示例示意try-finally语句的作用和用法  def fry_egg(): # 煎鸡蛋    print("打开天燃气...")    try:      count = int(input('请输入鸡蛋个数: '))      print('成功煎了', count, '个鸡蛋')    finally:      print("关闭天燃气")  try:    fry_egg()  except:    print("煎鸡蛋过程中出错")  print("程序正常退出")
View Code

raise 语句

  作用:
    触发一个错误,让程序进入异常状态发送错误通知给调用者
  语法:
    raise 异常类型
    或
    raise 异常对象
    或
    raise # 重新触发上一次异常

  # 此示例示意raise语句的作用和用法  def make_except():    print('函数开始')    # 在此处发错ValueError类型的错误通知给上层调用者    raise ValueError    print("函数结束")  try:    make_except()  except ValueError:    print("收到make_except函数内部发生的错误通知!!!")  print("程序运行结束")
View Code
  # 此示例示意用raise语句来传递错误信息  def fx():    print("fx开始")    # ... 此处可能会触发异常    error = ValueError("这是错误信息!!!")    raise error    print("fx结束")  def fy():    print('fy开始')    try:      fx()    except ValueError as e:      print("fx函数发生错误,e=", e)      raise # 等同于 raise e    print('fy结束')  try:    fy()  except ValueError as err:    print("收到fy函数内部发生了错误,数据是", err)    print("程序正常结束")
View Code

assert语句(断言语句)

  语法:
    assert 真值表达式,错误数据(通常是字符串)
  作用:
    当真值表达式为False时,用错误数据创建一个AssertionError类型的错误,并进入异常状态
等同于

  if bool(真值表达式) == False:

  raise AssertionError(错误数据)

  def get_age():    '''此函数只返回1~140的整数'''    s = input('请输入学生年龄:')    a = int(s)    assert 1 <= a <= 140, '年龄超出范围'    return a  try:    age = get_age()    print('学生的年龄是:',age)  except ValueError:    print('用户输入的不是整数!!')
View Code

异常相关的语句:

  try-except 语句
    接收错误通知
  try-finally 语句
    无论是正常流程还是异常流程,执行必须要执行的语句
  raise 语句
    触发错误通知,让程序进行异常流程
  assert 语句
    根据条件触发AssertionError类型的异常通知,让程序进入异常流程

转载于:https://www.cnblogs.com/zhaoyang1997/p/10548797.html

你可能感兴趣的文章