我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python基础教程之异常处理的方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python基础教程之异常处理的方法是什么

这篇文章主要介绍“Python基础教程之异常处理的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python基础教程之异常处理的方法是什么”文章能帮助大家解决问题。

异常

Python中,使用异常对象(exception object)来表示代码执行过程中所发生的异常情况,当执行程序爆出错误的时候则会抛出异常。

如果没有正确处理异常,则会终止运行。

你可以想象一下,如果你在开发一款产品时,出现异常而不报告出发生异常的原因,是不是会很难受,也很难解决异常的问题。

为了提高产品的稳定性与灵活性,Python运行开发者捕捉并处理各类异常,一般的内部模块报错如KeyError异常类较为常见,当然也有很多其他的。

错误与异常

简单了解下,Python将代码执行错误分为两类:语法错误(syntax error)和异常(exception)

语法错误

首先,是语法错误的问题。字面可知,代码解析错误。

这种错误通常出现在初学者,主要原因是所执行的代码不符合Python语法的规范,故会报出语法错误导致code停机。

下面给出一个错误示范:

>>> if for not in list(1,2,3,4)  File "<stdin>", line 1    if for not in list(1,2,3,4)       ^SyntaxError: invalid syntax

从上面的报错中可以知道是语法错误,无效的语法。并且指出了错误的地方在for的位置,很显然iffor不能用在一起。

异常

异常则是在代码执行过程中发现的错误,这是很难提前被发现的,即使代码写的很规范标准,但也可能会出现执行异常的情况。

下面给出一个错误示例。经常被提到的是除数为0的情况,数学运算中,0是不可以作为除数的,如果作为除数则会爆出异常。

>>> a = 5 / 0Traceback (most recent call last):  File "<stdin>", line 1, in <module>ZeroDivisionError: division by zero

很明显报错指出0作为除数是不对的。

异常处理

当我们了解了错误和异常后,就得处理异常情况。对于语法错误这种问题多多练习即可避免,对于第二种异常,python给出了try-except语句来处理。

为了更清晰的解释,还是以上面的除数为0的情况作为例子,我们通过添加try-except语句捕捉并处理异常情况:

def division(x, y):try:return x / yexcept ZeroDivisionError:print("0不能作为除数!!!")

然后我们再在terminal调用函数试试:

division(x=1, y=0)

输出:

0不能作为除数!!!

虽然我们的输入是错误的理论应该报错,但是并没有报错而且还返回了一段话。

下面解释一下try-except语句的工作原理:

  1. Try-except中的代码会被正常执行

  2. 如果没有出现异常则跳过except代码块并结束try-except

  3. 如果try-except中的某一句代码出现了问题异常,剩余代码停止执行,如果出现的异常与except所指定的一致,则执行except中的代码块,异常处理结束整个应用程序继续执行

  4. 如果出现的异常与except中指定的不符合,那么则跳出try语句,程序继续抛出异常并终止执行代码

当然,我们写的代码可能不止出现一种异常情况,我们可以将所有异常写在一个except语句中,如下所示:

except (RuntimeError, TypeError, NameError):pass

如果捕捉到异常列表中的任意一项异常表达式,则都会进入except处理。

当然,如果你想对每一种异常进行单独处理也可以一个一个的分开进行处理:

def passpass(x=1):try:return print(x+x)except (RuntimeError, TypeError, NameError):passexcept TypeError:print('参数错误啦~')except NameError:print('名称错误啦~')

今天先到这里明儿再更,去跳绳了,哎,每天卷卷卷,老北京鸡内卷啊~(2022.4.20)

Python的异常类型是可以继承的, 我们在此仅需知道,若except后指定的异常继承自前面异常,由此后面的异常也会被捕捉到,示例如下:

class A(Exception):passclass B(A):passclass C(B):passfor cls in [A, B, C]:try:raise cls()except C:print('C')except B:print('B')except A:print('A')

则会输出:

A
B
C

相反,如果把except的顺序倒过来,则只会输出A,由于异常B和C都继承来自A,由此在捕捉到B异常后则会终止:

class A(Exception):passclass B(A):passclass C(B):passfor cls in [A, B, C]:try:raise cls()except A:print('A')except B:print('B')except C:print('C')

输出全为A:

A
A
A

如果所有异常都一一的提取出来,这会很麻烦,此时可以在最后的一个except中不设置异常类型,由此剩下没有被捕获的异常全会被捕捉:

def passpass(x=1):try:return print(x/x)except TypeError:print('参数错误啦~')except NameError:print('名称错误啦~')except:print('报错啦~自己查')

一个重要功能:else.

else语句则是用来执行一些额外操作,如try代码块中执行了一些文件操作,在else中可以释放资源,else的语法格式如下:

try:passexcept:passelse:pass

当然我们还可以操作异常,如下:

def passpass(x=1):try:return print(x/x)except TypeError as error:print('参数错误啦~', error)except NameError:print('名称错误啦~')except:print('报错啦~自己查')

自主抛出异常

开发者在平常的有些情况下并没有执行错误,但是不符合设计逻辑,由此需要开发者主动抛出异常,这时我们需要使用raise语句抛出异常:

>>> raise NameError('HiThere')Traceback (most recent call last):  File "<stdin>", line 1, in <module>NameError: HiThere

自定义异常

Python内置异常无法满足开发需求的时候,可以自定义异常。

自定义异常类必须要直接或间接继承自Exception类。自定义异常类可以像其他类一样做任何事情,但原则上要保持简洁,提高一些属性即可。

class Error(Exception):"""Base class for exception in this module."""passclass InputError(Error):"""Exception raised for errors in the input.Attributes:expression -- input expression in which the error occurredmessage -- explanation of the winerror"""def __init__(self, expression, message):self.expression = expressionself.message = message

finally子句

else在代码正常执行后才会被执行的代码块,但有些情况无论代码块是否出现异常都要执行,则需要用到finally语句:

def passpass(x=1):try:return print(x/x)except TypeError as error:print('参数错误啦~', error)except NameError:print('名称错误啦~')except:print('报错啦~自己查')finally:print('运算结束~')

关于“Python基础教程之异常处理的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python基础教程之异常处理的方法是什么

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

下载Word文档

猜你喜欢

Python基础教程之异常处理的方法是什么

这篇文章主要介绍“Python基础教程之异常处理的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python基础教程之异常处理的方法是什么”文章能帮助大家解决问题。异常在Python中,使
2023-07-05

Python基础教程之异常处理详解

Python的异常处理能力是很强大的,它有很多内置异常,可向用户准确反馈出错信息,下面这篇文章主要给大家介绍了关于Python基础教程之异常处理的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-05-14

Python基础中的魔法方法与异常处理是怎样的

这期内容当中小编将会给大家带来有关Python基础中的魔法方法与异常处理是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一.魔法方法1.属性访问通常可以通过点(.)操作符的形式去访问对象的属性。cl
2023-06-25

Python中处理异常的方法是什么

在Python中处理异常的方法是使用try-except语句。try块中包含可能会抛出异常的代码,而except块中包含处理异常的代码。例如:try:# 可能会抛出异常的代码result = 10 / 0except ZeroDivis
Python中处理异常的方法是什么
2024-03-12

Python中的异常处理方法是什么

这篇文章主要介绍“Python中的异常处理方法是什么”,在日常操作中,相信很多人在Python中的异常处理方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中的异常处理方法是什么”的疑惑有所
2023-07-06

python中异常处理的方法是什么

Python中的异常处理方法是使用`try-except`语句块来捕获和处理异常。以下是一些常见的异常处理方法:1. 使用`try-except`语句块捕获指定类型的异常:```pythontry:# 可能会引发异常的代码...except
2023-08-08

kotlin协程异常处理的方法是什么

Kotlin协程的异常处理方法有以下几种:1. 使用try/catch块:在协程内部使用try/catch块来捕获异常,并对异常进行处理。例如:```kotlinGlobalScope.launch {try {// 协程代码块} catc
2023-09-20

python终止协程和异常处理的方法是什么

本文小编为大家详细介绍“python终止协程和异常处理的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“python终止协程和异常处理的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。协程中未处
2023-07-04

Python常见异常的处理方式是什么

这篇文章主要介绍“Python常见异常的处理方式是什么”,在日常操作中,相信很多人在Python常见异常的处理方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python常见异常的处理方式是什么”的疑
2023-07-05

Scala异常处理的方法是什么

这篇文章主要介绍“Scala异常处理的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Scala异常处理的方法是什么”文章能帮助大家解决问题。Scala异常处理Scala是一种多范式的编程语
2023-07-05

Scala异常处理方法是什么

这篇“Scala异常处理方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Scala异常处理方法是什么”文章吧。Sca
2023-06-27

Python基础学习教程系列讲解——try_except异常处理机制

在Python编程中不可避免的会出现错误,在调试阶段出现语法之类的错误时,Pycharm会在Debug窗口提示错误,但是程序在运行时由于内部隐含的问题而引起错误,会导致程序终止执行。比如以下例程中,使用urllib库打开URL时由于网络问题
2023-06-02

Python之异常值检测和处理方式是什么

这篇文章主要讲解了“Python之异常值检测和处理方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python之异常值检测和处理方式是什么”吧!1 什么是异常值?在机器学习中,异常检
2023-07-02

Java异常处理的的方法是什么

本篇内容主要讲解“Java异常处理的的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java异常处理的的方法是什么”吧!1) 为可恢复的错误使用检查型异常,为编程错误使用非检查型错误。
2023-06-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录