我们把可能发生错误的语句放在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

示例:

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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=msgdef __str__(self):return self.msgtry:raise Networkerror('类型错误')
except Networkerror as e:print(e)

8.断言:assert条件

assert 1 == 1
assert 1 == 2

9.总结try…except

  • 把错误处理和真正的工作分开来

  • 代码更易组织,更清晰,复杂的工作任务更容易实现

  • 毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了

结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

Python基础入门教程推荐:更多Python视频教程-关注B站:Python学习者

Python爬虫案例教程推荐:更多Python视频教程-关注B站:Python学习者

python基础:try...except...的详细用法相关推荐

  1. python基础 (一)import用法

    python基础 (一)import用法 版权声明:本文参考CSDN博主「易冷cheng」的文章进行精简 原文链接:https://blog.csdn.net/qq_41092406/article/ ...

  2. Python控制键盘鼠标pynput的详细用法 (转载)

    Python控制键盘鼠标pynput的详细用法 更新时间:2019年01月28日 15:15:16   作者:botoo 这篇文章主要介绍了Python控制键盘鼠标pynput的详细用法,小编觉得挺不 ...

  3. 万字长文爆肝Python基础入门【巨详细,一学就会】

    目录 数据的名字和种类--变量和类型 初探数据种类 数据类型 数值运算 比较运算 变量和赋值 变量的好处 用赋值更新变量 变量和数据类型的关系 总结 数据类型 数值运算 数值比较 变量和赋值 一串数据 ...

  4. python基础笔记,超详细,包含面向对象基础,爬虫实战【持续更新中...】

    前言: 本笔记中的函数和方法同义,面向python3 本笔记部分概念及代码由newbing搜集整理得出 本笔记适合有一定其他编程语言基础的同学,因为笔记中省略了部分基础概念(比如整型,浮点型等基本数据 ...

  5. python 基础知识点整理 和详细应用

    Python教程 Python是一种简单易学,功能强大的编程语言.它包含了高效的高级数据结构和简单而有效的方法,面向对象编程.Python优雅的语法,动态类型,以及它天然的解释能力,使其成为理想的语言 ...

  6. [转载] Python基础——Numpy库超详细介绍+实例分析+附代码

    参考链接: Python中的numpy.identity 1.NumPy简介 NumPy是高性能科学计算和数据分析的基础包,计算速度要比python自带的函数快很多,非常好用.一般不需要安装,装Pyt ...

  7. 【Python基础】random.shuffle()的用法

    函数用法   random.shuffle()用于将一个列表中的元素打乱顺序,值得注意的是使用这个方法不会生成新的列表,只是将原列表的次序打乱. 代码案例 # shuffle()使用样例 import ...

  8. 【Python基础教程】for循环用法详解

    如果明确的知道循环执行的次数或者是要对一个容器进行迭代(后面会讲到),那么我们推荐使用for-in循环,例如下面代码中计算 例: 用for循环实现1~100求和 sum = 0 for x in ra ...

  9. Python基础教程:元组详细使用

    元组 元组和列表类似,但属于不可变序列,元组一旦创建,用任何方法都不可修改其元素. 元组的定义方式和列表相同,但定义时所有元素是放在一对圆括号"()"中,而不是方括号中. 1.元组 ...

  10. python基础教程:global的用法

    Python中定义函数时,若想在函数内部对函数外的变量进行操作,就需要在函数内部声明其为global. 例子1 x = 1def func(): x = 2func() print(x) 输出:1 在 ...

最新文章

  1. P3806 【模板】点分治1
  2. CF338D GCD Table(拓展中国剩余定理,细节处理,2900分)
  3. Sublime Text 解决 Unable to download XXX 问题
  4. 通用分销渠道和通用产品组的解析
  5. 肝!十大 Python 机器学习库
  6. PHP实现微信随机红包算法和微信红包的架构设计简介
  7. windeployqt.exe的使用与避坑(windows平台)
  8. oracle merge 效率慢,更新语句的效率比较(merge into )
  9. centos安装mysql卡住_CentOS 6.4安装MySQL的过程中出现的bug
  10. 关于 php 用webservice传输数据的问题(nosoap与.NET对接)此处一直困扰三天时间,终于解决...
  11. 门禁系统产品选择与施工要点
  12. Bailian4123 马走日【DFS】
  13. 【风马一族_php】NO2_php基础知识
  14. Java开发揭秘!java反射和映射机制
  15. 爱荷华州立 计算机博士,2020年美国爱荷华州立大学博士全奖招生
  16. 2022年河南省安全保护服务人员(初级保安员)考试练习题及答案
  17. 明日之后无限金条服务器,明日之后:无限金条bug 你值得收藏
  18. 【突变检验合集】含Pettitt突变检验等
  19. 查看僵尸进程并杀掉僵尸进程
  20. 第29届奥运会中国代表团夺金榜

热门文章

  1. GlassFish新纪元
  2. Java文件路径(getResource)
  3. JS日期加减,日期运算
  4. Linux下Console的分类与切换
  5. Javascript自由拖拽类
  6. 【Android游戏开发十八】解放手指,利用传感器开发游戏!
  7. 网交会引发的新交易机会
  8. Spring BeanFactory实例化Bean的过程
  9. 企业为什么要开通银企直联_为什么要开通小红书企业号?——山东同乐电商培训基地...
  10. linux 查看开放的端口_如何在 Linux 中查看正在使用的端口