返回顶部
首页 > 资讯 > 后端开发 > Python >Python基础教程之错误和异常的处理方法
  • 467
分享到

Python基础教程之错误和异常的处理方法

2024-04-02 19:04:59 467人浏览 八月长安

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

摘要

目录前言异常与错误的概念错误分类语法错误运行时错误逻辑错误异常处理机制捕获异常并处理主动抛出异常断言处理自定义异常类常见异常及释义附:用户自定义异常实例总结前言 继续更新Python

前言

继续更新Python基础语法,到目前为止python基础语法已经接近了尾声,本次错误与异常处理更新完后会对文件、数据库、包管理、模块管理、正则表达式的使用进行更新。完成这几个大致的任务之后将会更新爬虫数据分析。本专栏所写的东西非常的适用初学者,当然也非常适合老手,每一部分都有很全面的编程技巧。相信大家看完后会感觉受益匪浅。(文末附有常见异常表)

异常与错误的概念

错误顾名思义就是由于某种原因,产生了不符合我们预期的结果。我们的代码在运行时非常的有可能出现错误,我们有时又称这种现象为BUG,在Python中异常通常指的是我们的Python解释器发现了我们程序中存在的错误,自己无法解决该错误的时候向操作系统提出了报告引发程序中断。正如现实中我们个人犯错而监管我们的人发现我们的错误,发现我们的异常举动并进行处理。及时帮我们纠正错误行为。

错误分类

语法错误

语法错误又称为编译错误,是计算机操作系统在执行你的代码的时候,由于你代码存在语法性问题无法开始执行程序导致的错误,一般就是函数名、关键字用错导致或者进行导包的时候导入了不存在的包。随着编译器的迭代更新不断变强,这种错误已经非常少见了。Python中编译错误提示SyntaxErrorl例如下图(缺少一半括号):

运行时错误

运行时错误指的是程序通过了编译,计算机操作系统开始执行你的程序在代码执行过程中出由于编程者的疏忽,产生了代码之间的矛盾导致的错误。例如:没有考虑到数组边界或者变量范围导致数组越界、零除异常...这种错误会导致你的程序突然就挂掉一定情况下会造成灰常大的损失。例如以下情况:

逻辑错误

这种错误往往是人们最烦恼的错误,因为操作系统不会直接抛出异常给我们看,你的程序也可以正常运行,但是对程序输入值之后得到的结果就是不对。非常的气人,我们能改进这种错误的方式就是baidu、动脑思考、进行调试、实在不行找个老鸟帮你看看。常见的错误有:死循环、表达式错误、局部全局变量混用....

异常处理机制

捕获异常并处理

Python中采用了结构化的异常处理机制我们可以通过try对异常进行捕获,然后在except中进行异常的处理。最后在finally中进行资源释放之类的工作(有没有异常finally中的代码都会执行),与其他语言不同的是,在Python中引入了一个else机制,else中的语句只有在try中的代码没有异常的时候才会执行。有异常就不执行。详细操作见下面代码,正如所见,可以对多个类型的异常进行捕获。对多个异常进行捕获的话需要将类型涵盖范围较小的异常放在前面,而在捕获之前一般由try代码块中的代码或者函数进行异常的抛出

# 异常的捕获
a=int(input('输入除数:'))
b=int(input('输入被除数:'))
try:
    res=a/b
except ZeroDivisionError:
    print('除数不可以为0')
    # 相同处理方式的异常可以这么写
except (BaseException,TypeError):
    print('有错误')
else:
    print('您的结果为',res)
finally:
    print('感谢使用!')

主动抛出异常

我们可以轻松的进行异常的捕获并进行解决。但是有时候我们有一种需求就是将错误抛出给上一层进行处理。这时候主动抛出异常就登场了。在Python中主动抛出异常使用的是raise关键字。raise关键字一般与自定义异常类一块进行使用,所以大家先记住raise是主动抛出异常的关键字,待会到自定义异常类处看代码即可。

断言处理

断言处理使用语法为:assert <布尔表达式>或者assert <布尔值表达式> , <字符串表达式>。assert会先对布尔值表达式进行判断,如果表达式为True就不进行操作,否则会抛出异常。并在抛出的异常中输出字符串表达式的信息。具体操作可以看以下代码:

'''
3 录入一个学生的成绩,把该学生的成绩转换为A优秀、B良好、C合格、D不及格的形式,
最后将该学生的成绩打印出来。要求使用assert断言处理分数不合理(小于0或者大于100)的情况
请编写程序。
'''

n=int(input())
assert n in range(101),"您输入的成绩不合理!"
if n>=85:
	print("优秀!")
elif n>=70:
	print("良好!")
elif n>=60:
	print("合格!")
else:
	print("不及格!")

自定义异常类

Python官方库中提供了一系列的异常处理类,在Python中所有的异常均由类实现,所有的异常类又继承自BaseException类,程序运行时出现的异常大多继承自Exception类。Python支持自定义异常类。自定义异常类一般继承Exception或者其子类名称一般以Exception或者Error命名。

自定义异常类以及主动抛弃异常

'''
自己定义一个异常类,继承Exception类, 捕获下面的过程:判断input()输入的字符串长度是否小于5, 
如果小于5,比如输入长度为3则输出:"The input is of length 3, expecting at least 5“,
大于5则输出"success”。 
'''
class StrLenError(Exception):
	def __init__(self,s):
		Exception.__init__(self,s)
		self.s =s
	def __str__(self):
			return f"The input is of length {len(self.s)}, expecting at least 5"
n=input()
if len(n)<=5:
	raise StrLenError(n)
else:
	print("success")

常见异常及释义

以下是一些常见的类及引发该类异常的错误描述:

类名描述
SyntaxError发生语法错误时引发
FileNotFoundError未找到指定文件或目录时引发
NameError找不到指定名称的变量时引发
ZeroDivisionError除数为0时的异常
IndexError当使用超出列表范围的索引时引发
KeyError当使用映射不存在的键时引发
AttributeError当尝试访问未知对象属性时引发
TypeError当试图在使用a类型的场合使用b类型时引发

附:用户自定义异常实例

你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承,例如:

>>> class NewError(Exception):
        def __init__(self, value):
            self.value = value
        def __str__(self):
            return repr(self.value)
   
>>> try:
        raise NewError(2*2)
    except NewError as e:
        print('New exception occurred, value:', e.value)
   
My exception occurred, value: 4
>>> raise NewError('oops!')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
__main__.NewError: 'oops!'

在这个例子中,类 Exception 默认的 init() 被覆盖。

当创建一个模块有可能抛出多种不同的异常时,一种通常的做法是为这个包建立一个基础异常类,然后基于这个基础类为不同的错误情况创建不同的子类:

class Error(Exception):
    """Base class for exceptions in this module."""
    pass

class InputError(Error):
    """Exception raised for errors in the input.

    Attributes:
        expression -- input expression in which the error occurred
        message -- explanation of the error
    """

    def __init__(self, expression, message):
        self.expression = expression
        self.message = message

class TransitionError(Error):
    """Raised when an operation attempts a state transition that's not
    allowed.

    Attributes:
        previous -- state at beginning of transition
        next -- attempted new state
        message -- explanation of why the specific transition is not allowed
    """

    def __init__(self, previous, next, message):
        self.previous = previous
        self.next = next
        self.message = message

大多数的异常的名字都以"Error"结尾,就跟标准的异常命名一样。

总结

到此这篇关于Python基础教程之错误和异常处理的文章就介绍到这了,更多相关Python错误和异常处理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python基础教程之错误和异常的处理方法

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

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

猜你喜欢
  • Python基础教程之错误和异常的处理方法
    目录前言异常与错误的概念错误分类语法错误运行时错误逻辑错误异常处理机制捕获异常并处理主动抛出异常断言处理自定义异常类常见异常及释义附:用户自定义异常实例总结前言 继续更新Python...
    99+
    2024-04-02
  • python基础之错误和异常处理
    import Exception # except 在捕获错误异常的时候 是要根据具体的错误类型来捕获的 # 用一个块 可以捕获多个不同类型的异常 # EXception ...
    99+
    2024-04-02
  • Python基础教程之异常处理的方法是什么
    这篇文章主要介绍“Python基础教程之异常处理的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python基础教程之异常处理的方法是什么”文章能帮助大家解决问题。异常在Python中,使...
    99+
    2023-07-05
  • Python基础之(九)错误和异常
    >>> for i in range(10) File "<stdin>", line 1 for i in range(10) ^ SyntaxError:...
    99+
    2023-01-31
    异常 错误 基础
  • Python基础教程之异常处理详解
    目录前言异常错误与异常语法错误异常异常处理自主抛出异常自定义异常finally子句总结前言 最近发现有些东西长时间不用就要忘了,坚持每天复习总结一个小知识点吧~ 异常是什么呢?就是在...
    99+
    2023-05-14
    python如何进行异常处理 python 异常 python程序异常处理例题
  • Python基础之语法错误和异常详解
    目录一、前言二、异常三、异常处理3.1 try/except3.2 try/except ... else3.3 try-finally四、抛出异常4.1 raise五、用户自定义异...
    99+
    2024-04-02
  • Python基础入门之魔法方法与异常处理
    目录一.魔法方法1.属性访问2.描述符3.定制序列5.生成器二.异常处理1.异常类型2.try-except语句3.try-finally语句4.raise语句5.丰富的else语句...
    99+
    2024-04-02
  • python基础之文件操作和异常处理
    目录一、文件和异常1.1从文件中读取数据1.2open()1.3关键字with1.4read()二、逐行读取三、创建一个包含文件各行内容的列表3.1readlines()四、查找字符...
    99+
    2024-04-02
  • Go错误和异常CGO fallthrough处理教程详解
    目录fallthrough代码示例执行结果CGO错误&异常处理错误:error处理异常:panic&recoverpanic&deferdefer执行顺序总结...
    99+
    2024-04-02
  • Python数据分析基础之异常值检测和处理方式
    目录1 什么是异常值?2 异常值的检测方法1. 简单统计2. 3∂原则3. 箱型图4. 基于模型检测5. 基于近邻度的离群点检测6. 基于聚类的方法来做异常点检测7. 专门...
    99+
    2024-04-02
  • Python基础知识方法重写+文件处理+异常处理
    目录一、方法重写二、运算符重载三、文件处理打开关闭文件文件读写四、异常处理异常抛出异常最后前言; Python基础知识+结构+数据类型 Python基础学习列表+元组+字典+集合 P...
    99+
    2024-04-02
  • php常见的错误与异常处理方法
    本篇内容介绍了“php常见的错误与异常处理方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php与其他计算机编程语言在遇到错误就抛出异常不...
    99+
    2023-06-02
  • PHP 异常处理:对错误和异常的全面处理
    异常处理是 php 中处理错误和异常的重要机制,提高了应用程序的健壮性和稳定性。错误由解释器抛出,表示无法恢复的严重问题。异常由代码抛出,表示可恢复的运行时问题。php 提供了 erro...
    99+
    2024-05-11
    php 异常处理
  • php7中异常与错误的处理方法
    这篇文章将为大家详细讲解有关php7中异常与错误的处理方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。异常与错误的概述什么叫做异常?异常是指程序运行中不符合预期情况以及与正常流程不同的状况。比如你链接数...
    99+
    2023-06-14
  • Python基础中的魔法方法与异常处理是怎样的
    这期内容当中小编将会给大家带来有关Python基础中的魔法方法与异常处理是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一.魔法方法1.属性访问通常可以通过点(.)操作符的形式去访问对象的属性。cl...
    99+
    2023-06-25
  • Python 基础教程之包和类的用法
    Python 基础教程之包和类的用法 建立一个文件夹filePackage 在filePackage 文件夹内创建 __init__.py 有了 __init__.py ,filePackage才算...
    99+
    2022-06-04
    基础教程 Python
  • python基础教程之Filter使用方法
    python Filter Python中的内置函数filter()主要用于过滤序列。 和map类似,filter()也接收一个函数和序列,和map()不同的是,filter()把传入的函数依次作用于每个...
    99+
    2022-06-04
    使用方法 基础教程 python
  • python 基础教程之Map使用方法
    Python Map Map会将一个函数映射到一个输入列表的所有元素上。Map的规范为:map(function_to_apply, list_of_inputs) 大多数时候,我们需要将列表中的所有元素...
    99+
    2022-06-04
    使用方法 基础教程 python
  • Java 异常处理:从基础到精通的终极教程
    异常处理是 Java 程序开发中不可或缺的一部分。它使程序能够优雅地处理在执行过程中发生的错误,从而提高程序的稳定性和可靠性。本文将提供一个全面的指南,涵盖 Java 异常处理的基础知识到高级概念。 异常的基础 异常:一种由错误或意外情...
    99+
    2024-04-02
  • Python基础学习教程系列讲解——try_except异常处理机制
    在Python编程中不可避免的会出现错误,在调试阶段出现语法之类的错误时,Pycharm会在Debug窗口提示错误,但是程序在运行时由于内部隐含的问题而引起错误,会导致程序终止执行。比如以下例程中,使用urllib库打开URL时由于网络问题...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作