异常处理

把可能会发生的错误,提前在代码里进行捕捉(监测)

try :

  code

except Exception:

出错后要执行的代码

下面是常见的异常

attributeError  试图访问一个对象没有的属性

Nameerror 访问一个没有变量

Valueerror 值类型不匹配

importError  导入不存在的模块

indentationError 缩进错误 -->  强类型错误,只要犯这种错误程序就会崩溃,这种错误是抓不到的

syntaxError  语法错误  --> 同上

indexError  下标索引超出边界错误 

Keyboardinterrupt   ctrl+c 无法退出程序 

EOFError    ctrl+d  无法退出程序

Typeerror  类型不符合

Unboundlocalerror  试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它

valueError  传入一个调用者不期望的值,及时值的类型是正确的

# -*- coding:utf-8 -*-

while True:
num1 = input("num1>>").strip()
num2 = input("num2>>").strip()
try:
num1 = int(num1)
num2 = int(num2)
result = num1 + num2
print(result,name)
# except Exception as err:
# print("info is error. check")
# print(err)
except NameError as e:
print(e)
except ValueError as e:
print(e)

Try ..else..finally  

Else 不触发异常执行里边的代码

Finally 无论触发异常与否都会执行里边的代码

  

自定义异常

# -*- coding:utf-8 -*-
#自定义异常 class YoutubeConnectionError(BaseException):
def __init__(self,msg):
self.msg = msg def __str__(self):
return self.msg name = "Alex"
d = [1,2,3] while True:
num1 = input("num1>>").strip()
num2 = input("num2>>").strip()
try:
num1 = int(num1)
num2 = int(num2)
result = num1 + num2
print(result)
#raise ImportError('123')
raise YoutubeConnectionError('根据法律不能翻墙')#主动触发异常
#d[3]
# except Exception as err:
# print("info is error. check")
# print(err)笔
except YoutubeConnectionError as e:
print(e)
except NameError as e:
print(e)
except ValueError as e:
print(e)
except Exception as e:
print('发生错误')
else:
print("Normal!!!,不发生异常走这里")
finally:
print('any无论错误与否,都会走这里')

Assert 断言的用途

Assert语法用于判断代码是否符合执行预期

Assert 1+1=2

Assert 1+ 2 = 2

它一般用来做单元测试,调用上千个借口,看是都会出现异常

def my_interface(name,age,sorce):
assert type(name) is str
assert type(age) is int
assert type(sorce) is float my_interface("Alex",22,66.3)

Python必须知道的异常处理的更多相关文章

  1. Python全栈【异常处理】

    Python全栈[异常处理] 本节内容: 1.异常处理 2.什么时候用异常处理 异常处理 1.异常处理: 异常就是程序运行时发生错误的信号,异常处理是在编程过程中为了增加友好性,在程序出现bug时一般 ...

  2. Python第十一天 异常处理 glob模块和shlex模块 打开外部程序和subprocess模块 subprocess类 Pipe管道 operator模块 sorted函数 os模块 hashlib模块 platform模块 csv模块

    Python第十一天    异常处理  glob模块和shlex模块    打开外部程序和subprocess模块  subprocess类  Pipe管道  operator模块   sorted函 ...

  3. Python标准异常和异常处理详解

    python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 1.异常处理: 本站Python教程会具体介绍. 2.断言(Asserti ...

  4. Python开发基础-Day23try异常处理、socket套接字基础1

    异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解 ...

  5. python基础之try异常处理、socket套接字基础part1

    异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解 ...

  6. python面向对象其他相关-异常处理-反射

    1.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象   2.issubclass(sub, super) 检查sub类是否是 super 类的派生类 n1 = 10 ...

  7. 洗礼灵魂,修炼python(28)--异常处理(2)—>运用异常

    你可能会想,卧槽这标题取的,前面不是说异常就是报错吗?异常还能运用? 是的,异常确实可以运用,可以刻意制造异常,在出现异常时捕获异常并对异常处理,所以进入本篇博文的话题—异常处理 异常处理: 异常处理 ...

  8. 【python学习-6】异常处理

    最近在网上看到了一种学习方法名叫费曼学习法,说的是学习一个东西的时候,要尝试着给别人讲出来,就是一种备课式的学习. 第一步,选择一个你想要理解的概念, 然后拿出一张白纸, 把这个概念写在白纸的最上边. ...

  9. python爬虫之urlError异常处理

    1.URLError URLError产生的原因: (1)网络无连接,即本机无法上网 (2)连接不到特定的服务器 (3)服务器不存在 import urllib.request import urll ...

  10. python之旅:异常处理

    一 什么是异常 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下 一个异常分为三部分 ...

随机推荐

  1. Java实现 蓝桥杯VIP 算法提高 进制转换

    算法提高 进制转换 时间限制:1.0s 内存限制:256.0MB 问题描述 程序提示用户输入三个字符,每个字符取值范围是0-9,A-F.然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制 ...

  2. Java实现 基础算法 求100以内的质数

    public class 求质数 { public static void main(String[] args) { for (int i = 2; i < 100; i++) { int t ...

  3. Java实现第八届蓝桥杯包子凑数

    包子凑数 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼都有非常多笼,可以认为是无限笼. 每当有顾客想买X个包子,卖包子的大叔 ...

  4. PAT 程序运行时间

    要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间.这个时间单位是 clock ...

  5. RocketMQ系列(二)环境搭建

    RocketMQ的基本概念在上一篇中给大家介绍了,这一节将给大家介绍环境搭建.RocketMQ中最基础的就是NameServer,我们先来看看它是怎么搭建的. NameServer RocketMQ要 ...

  6. 我们为什么要用hibernate

    1.hibernate对JDBC访问数据库的代码做了一个封装,简化了数据访问繁琐的代码. 2.hibernate的性能非常好,因为它是个轻量级框架.映射的灵活性很好,它支持各种关系型数据库,从一对一到 ...

  7. 微信小程序实现连续扫码功能(uniapp)

    注:本文使用的是 uniapp 语法. 微信小程序提供了扫码API:wx.scanCode,但它只能扫一次码,想要实现连续扫码,需要借用 camera 组件.camera 组件不仅能拍照,还具有扫码功 ...

  8. [转] C++中的namespace

    点击阅读原文 namespace中文意思是命名空间或者叫名字空间,传统的C++只有一个全局的namespace,但是由于现在的程序的规模越来越大,程序的分工越来越细,全局作用域变得越来越拥挤,每个人都 ...

  9. 伪造随机的User-Agent

    写好爬虫的原则只有一条: 就是让你的抓取行为和用户访问网站的真实行为尽量一致 1.伪造UA字符串,每次请求都使用随机生成的UA 为了减少复杂度,随机生成UA的功能通过第三方模块库fake-userag ...

  10. 当小程序的flex布局遇到button时,justify-content不起作用的原因及解决方案

    当小程序的flex布局遇到button时 发现justify-content不起作用,无论怎么设置都是space-around的效果. 经过排查,发现原因是小程序button中的默认样式中的margi ...