Python必须知道的异常处理
异常处理
把可能会发生的错误,提前在代码里进行捕捉(监测)
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必须知道的异常处理的更多相关文章
- Python全栈【异常处理】
Python全栈[异常处理] 本节内容: 1.异常处理 2.什么时候用异常处理 异常处理 1.异常处理: 异常就是程序运行时发生错误的信号,异常处理是在编程过程中为了增加友好性,在程序出现bug时一般 ...
- Python第十一天 异常处理 glob模块和shlex模块 打开外部程序和subprocess模块 subprocess类 Pipe管道 operator模块 sorted函数 os模块 hashlib模块 platform模块 csv模块
Python第十一天 异常处理 glob模块和shlex模块 打开外部程序和subprocess模块 subprocess类 Pipe管道 operator模块 sorted函 ...
- Python标准异常和异常处理详解
python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 1.异常处理: 本站Python教程会具体介绍. 2.断言(Asserti ...
- Python开发基础-Day23try异常处理、socket套接字基础1
异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解 ...
- python基础之try异常处理、socket套接字基础part1
异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解 ...
- python面向对象其他相关-异常处理-反射
1.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 2.issubclass(sub, super) 检查sub类是否是 super 类的派生类 n1 = 10 ...
- 洗礼灵魂,修炼python(28)--异常处理(2)—>运用异常
你可能会想,卧槽这标题取的,前面不是说异常就是报错吗?异常还能运用? 是的,异常确实可以运用,可以刻意制造异常,在出现异常时捕获异常并对异常处理,所以进入本篇博文的话题—异常处理 异常处理: 异常处理 ...
- 【python学习-6】异常处理
最近在网上看到了一种学习方法名叫费曼学习法,说的是学习一个东西的时候,要尝试着给别人讲出来,就是一种备课式的学习. 第一步,选择一个你想要理解的概念, 然后拿出一张白纸, 把这个概念写在白纸的最上边. ...
- python爬虫之urlError异常处理
1.URLError URLError产生的原因: (1)网络无连接,即本机无法上网 (2)连接不到特定的服务器 (3)服务器不存在 import urllib.request import urll ...
- python之旅:异常处理
一 什么是异常 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下 一个异常分为三部分 ...
随机推荐
- Java实现 蓝桥杯VIP 算法提高 进制转换
算法提高 进制转换 时间限制:1.0s 内存限制:256.0MB 问题描述 程序提示用户输入三个字符,每个字符取值范围是0-9,A-F.然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制 ...
- Java实现 基础算法 求100以内的质数
public class 求质数 { public static void main(String[] args) { for (int i = 2; i < 100; i++) { int t ...
- Java实现第八届蓝桥杯包子凑数
包子凑数 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼都有非常多笼,可以认为是无限笼. 每当有顾客想买X个包子,卖包子的大叔 ...
- PAT 程序运行时间
要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间.这个时间单位是 clock ...
- RocketMQ系列(二)环境搭建
RocketMQ的基本概念在上一篇中给大家介绍了,这一节将给大家介绍环境搭建.RocketMQ中最基础的就是NameServer,我们先来看看它是怎么搭建的. NameServer RocketMQ要 ...
- 我们为什么要用hibernate
1.hibernate对JDBC访问数据库的代码做了一个封装,简化了数据访问繁琐的代码. 2.hibernate的性能非常好,因为它是个轻量级框架.映射的灵活性很好,它支持各种关系型数据库,从一对一到 ...
- 微信小程序实现连续扫码功能(uniapp)
注:本文使用的是 uniapp 语法. 微信小程序提供了扫码API:wx.scanCode,但它只能扫一次码,想要实现连续扫码,需要借用 camera 组件.camera 组件不仅能拍照,还具有扫码功 ...
- [转] C++中的namespace
点击阅读原文 namespace中文意思是命名空间或者叫名字空间,传统的C++只有一个全局的namespace,但是由于现在的程序的规模越来越大,程序的分工越来越细,全局作用域变得越来越拥挤,每个人都 ...
- 伪造随机的User-Agent
写好爬虫的原则只有一条: 就是让你的抓取行为和用户访问网站的真实行为尽量一致 1.伪造UA字符串,每次请求都使用随机生成的UA 为了减少复杂度,随机生成UA的功能通过第三方模块库fake-userag ...
- 当小程序的flex布局遇到button时,justify-content不起作用的原因及解决方案
当小程序的flex布局遇到button时 发现justify-content不起作用,无论怎么设置都是space-around的效果. 经过排查,发现原因是小程序button中的默认样式中的margi ...