【自动化测试必学语言】python:异常

程序在运行时,如果 Python 解释器 遇到到⼀个错误,会停止程序的执行,并且提示⼀些错误信息,这就是 异常
程序停止执行并且提示错误信息这个动作,抛出异常(raise 关键字)
捕获异常:程序遇到异常,默认动作是终止代码程序的执行,遇见异常之后,可以使用异常捕获,让程序代码继续运行,不会终止运行(重点)

异常捕获【重点


基本语法

try :
书写可能发生异常的代码
except : # 任何类型的异常都能捕获
发生了异常执行的代码
try :
书写可能发生异常的代码
except 异常类型 : # 只能捕获指定类型的异常, 如果不是这个异常, 还是会报错
发生了异常执行的代码
try:
    # 1. 获取⽤户从键盘输⼊的数据
    num = input('请输⼊数字:')
    # 2. 转换数据类型为整数
    num = int(num)
    # 3. 输出转换之后的数据内容
    print(num)
except:
    print('请输⼊正确的数字')
    print('后续其他的代码,可以继续执⾏')

try:
    # 1. 获取⽤户从键盘输⼊的数据
    num = input('请输⼊数字:')
    # 2. 转换数据类型为整数
    num = int(num)
    # 3. 输出转换之后的数据内容
    print(num)

except ValueError: # 只能捕获 ValueError 类型及其⼦类的异常
    print('发⽣了异常, 请输⼊正确的数字...')

捕获多个指定类型的异常

好处可以针对不同的异常错误进行单独的代码处理。

try :
书写可能发生异常的代码
except 异常类型 1 : # 只能捕获指定类型的异常, 如果不是这个异常, 还是会报错
发生了异常 1 执行的代码
except 异常类型 2 :
发生了异常 2 执行的代码
except 异常类型 ...:
发生了异常 ... 执行的代码
try:
    # 1. 获取⽤户从键盘输⼊的数据
    num = input('请输⼊数字:')
    # 2. 转换数据类型为整数
    num = int(num)
    # 3. 输出转换之后的数据内容
    print(num)
    a = 10 / num # 10 / 0
    print(f'a: {a}')

except ValueError: # 只能捕获 ValueError 类型及其⼦类的异常
    print('发⽣了异常, 请输⼊正确的数字...')
except ZeroDivisionError:
    print('除数不能为 0')

异常捕获的完整版本

完整版本中的内容 不是说每⼀次都要全部书写 根据自己的需要 去选择其中的进行使用。
try :
可能发生异常的代码
except 异常类型 1 :
发生异常类型 1 执行的代码
# Exception 是常见异常类的父类, 这里书写 Exception, 可以捕获常见的所有⼀会,as 变量, 这个变量是⼀个异常类的对象,print( 变量 ) 可以打印异常信息
except Exception as 变量 :
发生其他类型的异常 执行的代码
else :
没有发生异常会执行的代码
finally :
不管有没有发生异常 都会执行的代码
try :
可能发生异常的代码
except Exception as e :
发生异常执行的代码
try:
    # 1. 获取⽤户从键盘输⼊的数据
    num = input('请输⼊数字:')
    # 2. 转换数据类型为整数
    num = int(num)
    # 3. 输出转换之后的数据内容
    print(num)
    a = 10 / num # 10 / 0
    print(f'a: {a}')

except Exception as e:
    print(f"错误信息为: {e}")
else:
    print('没有发⽣异常我会执⾏')
finally:
    print('不管有没有发⽣异常,我都会执⾏')
    # print('不管有没有发⽣异常,我都会执⾏')

异常传递【了解】


  • 异常传递是 Python 中已经实现好了我们不需要操作我们知道异常会进行传递.
  • 异常传递在函数嵌套调用的过程中被调用的函数,发生了异常如果没有捕获会将这个异常向外层传递. .... 如果传到最外层还没有捕获才报错。

模块和包


  1. Python 源代码文件就是⼀个模块
  2. 模块中定义的变量函数类,都可以让别人使用,同样,可以使用别人定义的(好处:别人定义好的不需要我们再次书写,直接使用即可)
  3. 想要使用别人的模块中的内容工具(变量,类,函数),必须先导入模块才可以
  4. 我们自己写的代码,想要作为模块使用,代码的名字需要满足标识符的规则(由数字,字母下划线组成,不能以数字开头)

导入模块的语法

方式一

import 模块名
# 使用模块中的内容
模块名 .工 具名
# 举例
import random
import json
random . randint ( a , b )
json . load ()
json . dump ()

方式二 

from 模块名 import 具名
# 使用
工具名 # 如果是函数和类需要加括号
# 举例
from random import randint
from json import load , dump
randint ( a , b )
load ()
dump ()
方式三  【 了解】   基本不用
from 模块名 import * # 将模块中所有的内容都导入
from random import *
from json import *
randint ( a , b )
load ()
dump ()
# ⽅式⼀ 重点记忆
# import random
#
# print(random.randint(1, 20))
# ⽅式⼆, 重要快捷⽅式导包
# from random import randint
# from random import randint
#
# print(randint(1, 20))
# ⽅式三, 问题: 可能存在多个模块中有相同的名字的⼯具, 会
产⽣冲突
from random import *

print(randint(1, 20))
对于导入的模块和工具可以使用  as 关键字给其起别名
注意: 如果起别名 原来的名字就不能用了 只能使用别名

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值