广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python学习—异常
  • 443
分享到

Python学习—异常

异常Python 2023-01-31 01:01:41 443人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

一.异常处理的定义   python解释器检测到错误,触发异常(也允许程序员自己触发异常)   程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)   如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻

一.异常处理的定义

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

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

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

二.异常处理的用法

  为了保证程序的健壮性与容错性,即在遇到错误时候程序不会崩溃,我们需要对异常进行处理,
1,如果错误发生的条件是可预知的,我们需要用if进行处理,在错误发生之前进行预防

age1 = 10
while True:
    age=input('输入: ')
        if age.isdigit(): #只有在age为字符串形式的整数时,下列代码才不会出错,该条件是可预知的
        age=int(age)
        if age == age1:
            print('you Got it')
            break

  
2,如果错误发生的条件是不可预知的,则需要用到try..except:在错误发生之后进行处理

三.基本语法为

try:
    被检测的代码块
except 异常类型:
    try中一旦检测到异常,就执行这个位置的逻辑

举例

try:
    f=open('a.txt')
    g=(line.strip() for line in f)
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
except StopIteration:
    f.close()

  

四.try...except...的详细用法

  我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except
1.异常类只能来处理指定的异常情况,如果非指定异常则无法处理

s1 = 'hello'
try:
    int(s1)
except IndexError as e: # 捕获到异常,程序直接报错
    print(e)

  
2.多分支

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)

  
3.万能异常Exception

s1 = 'hello'
try:
    int(s1)
except Exception as e:
    print(e)

  
4.多分支+Exception

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
except Exception as e:
    print(e)

  
5.异常的其他机构(try...finally语法)

  try...finally语句无论是否发生异常都将会执行最后的代码。语法如下:

try:
<语句>
finally:
<语句>    #退出try时总会执行
raise

 示例:

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
except Exception as e:
    print(e)
else:
    print('try内代码块没有异常则执行我')
finally:
    print('无论异常与否,都会执行该模块,通常是进行清理工作')

  
6.主动触发异常(raise语句)

  我们可以使用raise语句自己触发异常,raise语法格式如下:

raise [Exception [, args [, traceback]]]

  语句中Exception是异常的类型(例如,NameError)参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是"None"。

最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

示例:

一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。

定义一个异常非常简单,如下所示:

def functionName( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 触发异常后,后面的代码就不会再执行

try:
    raise TypeError('类型错误')
except Exception as e:
    print(e)

  
7.自定义异常

  通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。

  以下为与BaseException相关的实例,实例中创建了一个类,基类为BaseException,用于在异常触发时输出更多的信息。

  在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。

class Networkerror(BaseException):
    def __init__(self,msg):
        self.msg=msg
    def __str__(self):
        return self.msg

try:
    raise Networkerror('类型错误')
except Networkerror as e:
    print(e)

8.断言:assert条件

assert 1 == 1  #不会报错
assert 1 == 2  #会报错
assert 1 != 1  #会报错

栗子:

def is_huiwen_num(num):
    snum = str(num)
    return snum == snum[::-1]

# 如果希望程序中的所有assert语句不执行, 那么给python -O 脚本名
if __name__ == "__main__":
    assert is_huiwen_num(100) == True    #会在这里直接抛出异常,中断执行过程
    assert  is_huiwen_num(101) == True
    print("assert")

运行结果:
Traceback (most recent call last):
  File "/home/kiOSk/PyCharmProjects/python_projects/ttttt.py", line 7, in <module>
    assert is_huiwen_num(100) == True
AssertionError

五.常见异常种类

在python中不同的异常可以用不同的类型(python中统一了类与类别,类型即类)取标识,一个异常标识一种错误。
常见语法错误

AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x

IOError 输入/输出异常;基本上是无法打开文件

ImportError 无法引入模块或包;基本上是路径问题或名称错误

IndentationError 语法错误(的子类) ;代码没有正确对齐

IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]

KeyError 试图访问字典里不存在的键

KeyboardInterrupt Ctrl+C被按下

NameError 使用一个还未被赋予对象的变量

SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)

TypeError 传入对象类型与要求的不符合

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

ValueError 传入一个调用者不期望的值,即使值的类型是正确的

--结束END--

本文标题: Python学习—异常

本文链接: https://www.lsjlt.com/news/183301.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python学习—异常
    一.异常处理的定义   python解释器检测到错误,触发异常(也允许程序员自己触发异常)   程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)   如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻...
    99+
    2023-01-31
    异常 Python
  • python 异常学习1
    python用异常对象(exception object)来表示异常情况。遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的 回溯(Traceback, 一种错误信息)终止执行:>>> 1/0 Tra...
    99+
    2023-01-31
    异常 python
  • Python学习 :异常处理
      异常处理   什么是异常处理   - python解释器检测到错误,触发异常(也允许程序员自己触发了异常)   - 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,只与异常处理有关)   - 如果捕捉成功则进入另外...
    99+
    2023-01-30
    异常 Python
  • python学习之异常处理
    一、语法导致的异常,应该在程序运行前处理 例子: print( 输出: File "E:/python/oldboyday9/learn1.py", line 4     if      ^ SyntaxError: invalid sy...
    99+
    2023-01-31
    异常 python
  • Python学习手册之Python异常和
    在上一篇文章中,我们介绍了 Python 的函数和模块,现在我们介绍 Python 中的异常和文件。 查看上一篇文章请点击:https://www.cnblogs.com/dustman/p/9963920.html 异常和文件 异常 异...
    99+
    2023-01-30
    异常 手册 Python
  • python 自定义异常类学习
    #自定义异常类 class MyException(Exception): pass def exextp_01(): try: #come code here list = ['java...
    99+
    2023-01-31
    自定义 异常 python
  • python基础学习15----异常处理
    异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。 1.异常的类型 异常的类型多种多样,常见的异常有: AttributeError 试图访问一个对象没有的属性...
    99+
    2023-01-30
    异常 基础 python
  • Python学习之异常处理详解
    目录什么是异常与异常处理异常的语法捕获通用异常捕获具体异常如何捕获多个异常捕获多个异常 - 方法1捕获多个异常 - 方法2本章节主要学习 python 中的异常处理,来看一下该章节的...
    99+
    2022-11-13
  • Python学习之异常断言详解
    该章节我们来学习 异常的最后一个知识点 - 断言 ,断言是判断一个表达式,在表达式为 False 的时候触发异常。表达式我们可以对号入座,可以是条件语句中的声明,也可以是是 whil...
    99+
    2022-11-13
  • Python学习笔记9——异常处理
    就看这篇博客吧:一篇搞定所有的异常处理,讲的很详细。 异常 Python中各种异常也是类,类Exception继承自类BaseException,还有其他各种异常等等,此外,通过继承BaseException或者Exception可以自定...
    99+
    2023-01-30
    学习笔记 异常 Python
  • python3学习之异常
    ##异常处理 #try: #    pass #except Exception as ex:   Exception(捕获所有错误)可以换成任何异常类型,代表只捕获指定错误, # 可以写多个except #    pass ##异常类型...
    99+
    2023-01-31
    异常
  • Python学习之自定义异常详解
    目录自定义抛出异常关键字 - raise演示小案例 - 1演示小案例 - 2自定义异常类总结在上一章我们学习了 异常的三个关键字,分别是try、except 以及 finally。我...
    99+
    2022-11-13
  • Python学习笔记总结(四):异常处理
    一、异常基础 1、基础 try/except/else:【else是可选的】捕捉由代码中的异常并恢复,匹配except里面的错误,并执行except中定义的代码,后继续执行程序(发生异常后,由except捕捉到异常后,不...
    99+
    2023-01-31
    学习笔记 异常 Python
  • Python 3 学习笔记:异常代码调试
    什么是异常 程序运行过程中,产生的错误统称为异常(bug)。这些异常有的可能是语法错误,如关键字输入错误、调用错误等,这一类的异常都是显式的,很好发现;还有一种就是隐式的错误,只用在使用时才会被发现,和使用者的操作有关。 下面介绍一下 Py...
    99+
    2023-01-31
    学习笔记 异常 代码
  • 机器学习:异常检测
    问题定义 anomaly,outlier, novelty, exceptions 不同的方法使用不同的名词定义这类问题。 应用 二分类 假如只有正常的数据,而异常的数据的范围非常广的话(无...
    99+
    2023-09-16
    机器学习 异常检测
  • 机器学习——异常检测
    异常点检测(Outlier detection),⼜称为离群点检测,是找出与预期对象的⾏为差异较⼤的对象的⼀个检测过程。这些被检测出的对象被称为异常点或者离群点。异常点(outlier)是⼀个数据对象,它明显不同于其他的数据对象。异常点检测...
    99+
    2023-08-23
    机器学习 人工智能
  • Java异常学习之自定义异常详解
    前言哎呀,妈呀,又出异常了!俗话说:“代码虐我千百遍,我待代码如初恋”。小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常。Java异常的体系什么的,理论知识啥的我就懒得去BB太多了,是个搞J...
    99+
    2023-05-31
    java 自定义异常 ava
  • Python学习之异常处理的避坑指南
    目录finally 与 return 的执行顺序else 与 return 的执行顺序总结最终想了想,还是把这个章节单独拎出来,虽然字数不多。 在代码中,存在return也应当执行f...
    99+
    2022-11-13
  • Python学习笔记整理(十七)异常处理
    一、异常基础 try/except:捕捉由代码中的异常并恢复,匹配except里面的错误,并自行except中定义的代码,后继续执行程序(发生异常后,由except捕捉到异常后,不会中断程序,继续执行try语句后面的程序) ...
    99+
    2023-01-31
    学习笔记 异常 Python
  • Python学习之异常中的finally使用详解
    目录finally的功能与用法finally示例案例finally触发的必然性与优先级try语法伴随except或finally的必然性finally的历史今天我们来学习一下 异常语...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作