day8 异常处理

异常和错误

part1:程序中难免出现错误,而错误分成两种

1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正)

2.逻辑错误(逻辑错误)

part2:什么是异常

异常发生之后

异常之后的代码就不执行了

什么是异常处理

python解释器检测到错误,触发异常(也允许程序员自己触发异常)

程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)

如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理

如何进行异常处理?

一: 使用if判断式

1.if判断式的异常处理只能针对某一段代码,对于不同的代码段的相同类型的错误你需要写重复的if来进行处理。

2.在你的程序中频繁的写与程序本身无关,与异常处理有关的if,会使得你的代码可读性极其的差

3.if是可以解决异常的,只是存在1,2的问题,所以,千万不要妄下定论if不能用来异常处理。

二:python为每一种异常定制了一个类型,然后提供了一种特定的语法结构用来进行异常处理

try:
     被检测的代码块
except 异常类型:
     try中一旦检测到异常,就执行这个位置的逻辑
# try:
#     print(1111)
#     int(‘a‘)
# except Exception as e:
#     print(e)

part2:异常类只能用来处理指定的异常情况,如果非指定异常则无法处理。

part3:多分支

# try:
#     num = int(input(‘num:‘))
#     l[num]
# except ValueError: print("请输入一个数字")
# except IndexError: print(‘值不存在‘)
# except Exception as e: print(e)

part4:万能异常 在python的异常中,有一个万能异常:Exception,他可以捕获任意异常,即:

# 通过多分支,多不同的错误进行不同的处理
# 具体的异常处理+万能异常,
    # 能否提前预料到的异常都应该用具体的异常区处理
    # 万能异常应该写在最好
# try:
#     num = int(input(‘num:‘))
#     l[num]
# except ValueError: print("请输入一个数字")
# except IndexError: print(‘值不存在‘)
# except Exception as e: print(e)

part5:异常的else部分

# else
# 如果try语句中的代码都顺利的执行了,没有报错,那么执行else中的代码
# try:
#     num = int(input(‘num:‘))
#     # l[num]
# except ValueError: print("请输入一个数字")
# except IndexError: print(‘值不存在‘)
# except Exception as e: print(e)
# else:print(‘执行else了‘)

part6:异常的finally部分

# finally 无论如何都会执行
# try:
#     num = int(input(‘num:‘))
#     # l[num]
# except ValueError: print("请输入一个数字")
# except IndexError: print(‘值不存在‘)
# except Exception as e: print(e)
# else:print(‘执行else了‘)
# finally:print(‘执行finallu了‘)

part7:主动抛异常与自定义异常

# 主动抛异常
# 自定义异常
# raise ValueError
# class LeiException(BaseException):
#     def __init__(self, msg):
#         self.msg = msg
#     def __str__(self):
#         return self.msg
# try:
#     raise  LeiException(‘类型错误‘)
# except Exception as e:print(e)

part8:断言

# assert 1 == 2   # 类似if语句,满足条件继续执行,不满足条件会报错
# print(666)

part9:try..except的方式比较if的方式的好处

try..except这种异常处理机制就是取代if那种方式,让你的程序在不牺牲可读性的前提下增强健壮性和容错性

异常处理中为每一个异常定制了异常类型(python中统一了类与类型,类型即类),对于同一种异常,一个except就可以捕捉到,可以同时处理多段代码的异常(无需‘写多个if判断式’)减少了代码,增强了可读性

使用try..except的方式

1:把错误处理和真正的工作分开来
2:代码更易组织,更清晰,复杂的工作任务更容易实现;
3:毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;

原文地址:https://www.cnblogs.com/zh-lei/p/9133312.html

时间: 2024-08-02 15:14:12

day8 异常处理的相关文章

day8 (异常处理和网络编程)

一.异常处理 #1 什么是异常? # 异常是错误发生的信号,一旦程序出错,就会产生一个异常,应用程序未处理该异常, # 异常便会抛出,程序随之终止 #2.常见异常类型 #I:语法错误应该在程序运行前修正 # if 1 >2 # print('xxxxx') #II:逻辑错误 #x #NameError: name 'x' is not defined # l=[] # l[10000] #IndexError # class Foo: # pass # Foo.x #AttributeError

DAY8 - 异常处理,面向对象编程

网络编程 用基础的urllib包发送get请求: 输出为: 发送post请求: 输出为: 利用requests包来发送请求: 发送get请求: res.json()方法可以将得到的response返回成字典 输出为: 发送post请求: 输出为: 发送入参为json格式的post请求: 输出为: 发送带cookie的post请求: 输出为: 发送带Header的请求: 输出为: 如果请求的是一个url网页: 用res.text来返回一个字符串: 如果请求的返回是一个图片,音乐或者视频文件,那么实

day8 网络编程 接口开发 异常处理

一 .在day7中已经讲了单个接口的开发,今天讲有关系的接口开发,也就是依赖性,比如你要在博客园写文章就必须先登录,登陆之后才能发表文章,那么登陆和发表文章之间就有个依赖关系,要做的就是这种开发: 1.接口开发首先要导入flask,导入我们用的着的方法 截图:__name__这里有必要解释一下,name前后是两个_不要写错 导入方法: 1.如果不嫌麻烦完全可以一级一级目录点出来, 2.也可以手动添加环境变量 3.就是可以用pycharm自动帮我们添加环境变量,右键选择Mark Directory

异常处理(day8)

一.什么是异常 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下 错误分成两种: 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) 2.逻辑错误 二.异常的种类 在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,一个异常标识一种错误 1.常用异常 AttributeError 试图访问一个对象没有的树

文成小盆友python-num8 面向对象中的成员,成员修饰符,特殊成员,异常处理,设计模式之单例模式

本节主要内容: 1.面向对象中的成员 2.成员修饰符 3.特殊成员 4.异常处理 5.设计模式之单例模式 一.面向对象中的成员(类的成员) 类的成员总共可以分为3大类,每类中有不同的分支. 1.总述,基本分类 如下图所示: 类成员包括字段,方法,和属性 2.字段 如上图字段分为普通字段和静态字段,两者的使用有区别,但是最大的区别在于两者在内存中的保存位置有区别. 普通字段属于对象而静态字段属于类,在使用过程中谁的字段就由谁来调用. 静态字段和普通字段的定义如下: 在调用时分各自调用 #####类

python笔记 - day8

python笔记 - day8 参考: http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/wupeiqi/articles/5017742.html 大纲 面向对象三大特性之多态 类成员之静态字段和普通字段 类成员之普通方法和静态方法以及类方法 类成员之属性 类成员之成员修饰符 类成员之特殊成员 其他之isinstance和issubclass 其他之super的应用 实例之自定义有序字典 单例模式 基本异常

Python基础篇-day8

本节目录1.抽象接口2.静态方法.类方法.属性方法3.类的特殊方法    3.1 __doc__ 表示类的描述信息(注释)    3.2 __module__ 和 __class__     3.3 __init__ 构造方法,通过类创建对象时,自动触发执行.    3.4 __del__    3.5 __call__ 对象后面加括号,触发执行    3.6 __dict__ 查看类或对象中的所有成员    3.7 __str__     3.8 __getitem__.__setitem__

接口开发、异常处理、网络编程

一.接口开发,有依赖关系的接口开发 1.场景:用户登录后发表文章 用户登录接口代码示例: import flask,time,json from lib import tools server = flask.Flask(__name__) @server.route('/login',methods=['get']) def login(): username = flask.request.values.get('username') pwd = flask.request.values.g

eight day1----模块和包,异常处理

复习 1 基础数据类型 2 int float... 3 list 4 dict set 字典通过key取值 5 for循环 while循环 条件语句 6 .. 7 文件操作: 8 with打开两个文件,会报错::最靠谱的close.open 9 打开模式 :记住 a w r ab wb rb即可 10 a w r --直接对字符串操作 11 ab wb rb---直接对字节操作 12 操作系统的编码和python编码不一致的乱码问题 13 函数: 14 函数基础: 15 定义时: 16 调用: