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

Python异常对象Exception基础类异常捕捉

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

Python异常对象Exception基础类异常捕捉

异常对象

Python中遇到错误后,会引发异常。

Python中使用异常对象来表示异常情况。

如果异常对象未被处理或者捕捉,程序就会用所谓的回溯(traceback)来终止执行。

下面是一个例子:

def func1():
    raise Exception
if __name__ == "__main__":
    func1()

执行之后报错:

(venv) E:\Codes\python_everything\begining-python\class="lazy" data-src\08>list8-2.py
Traceback (most recent call last):
  File "E:\Codes\python_everything\begining-python\class="lazy" data-src\08\list8-2.py", line 19, in <module>
    func1()
  File "E:\Codes\python_everything\begining-python\class="lazy" data-src\08\list8-2.py", line 15, in func1
    raise Exception
Exception

异常有不同的类型,Exception是基础类,下面还有各种子类:

 +-- Exception
      +-- StopIteration
      +-- StandardError
      |    +-- BufferError
      |    +-- ArithmeticError
      |    |    +-- FloatingPointError
      |    |    +-- OverflowError
      |    |    +-- ZeroDivisionError
      |    +-- AssertionError
      |    +-- AttributeError
      |    +-- EnvironmentError
      |    |    +-- IOError
      |    |    +-- OSError
      |    |         +-- WindowsError (Windows)
      |    |         +-- VMSError (VMS)
      |    +-- EOFError
      |    +-- ImportError
      |    +-- LookupError
      |    |    +-- IndexError
      |    |    +-- KeyError
      |    +-- MemoryError
      |    +-- NameError
      |    |    +-- UnboundLocalError
      |    +-- ReferenceError
      |    +-- RuntimeError
      |    |    +-- NotImplementedError
      |    +-- SyntaxError
      |    |    +-- IndentationError
      |    |         +-- TabError
      |    +-- SystemError
      |    +-- TypeError
      |    +-- ValueError
      |         +-- UnicodeError
      |              +-- UnicodeDecodeError
      |              +-- UnicodeEncodeError
      |              +-- UnicodeTranslateError

还可以通过继承Exception来实现自己的类:

class SomeError(Exception): pass
def func2():
    raise SomeError
if __name__ == "__main__":
    func2()

异常捕捉

异常可以被捕捉,需要使用try...except...语句:

class SomeError(Exception): pass
def func2():
    raise SomeError
if __name__ == "__main__":
    try:
        func2()
    except SomeError:
        print("Some error happened")

这里捕捉到了参数,所以就不会回溯:

(venv) E:\Codes\python_everything\begining-python\class="lazy" data-src\08>list8-3.py
Some error happened

但是如果是其它的异常:

def func1():
    raise Exception
class SomeError(Exception): pass
def func2():
    raise SomeError
if __name__ == "__main__":
    try:
        func1()
    except SomeError:
        print("Some error happened")

这里的Exception就没有被捕获,所以还是会回溯:

(venv) E:\Codes\python_everything\begining-python\class="lazy" data-src\08>list8-3.py
Traceback (most recent call last):
  File "E:\Codes\python_everything\begining-python\class="lazy" data-src\08\list8-3.py", line 27, in <module>
    func1()
  File "E:\Codes\python_everything\begining-python\class="lazy" data-src\08\list8-3.py", line 15, in func1
    raise Exception
Exception

如果没有出现异常,则会继续往下执行,但是这里可以有else语句来执行没有异常时可以执行的语句,使整个逻辑更通顺:

if __name__ == "__main__":
    try:
        print("No exception")
    except SomeError:
        print("Some error happened")
    else:
        print("No error happened")

结果如下:

(venv) E:\Codes\python_everything\begining-python\class="lazy" data-src\08>list8-3.py
No exception
No error happened

但是有时即使发生了无法捕捉的异常,也想要执行一些语句,这个时候就可以使用finally语句:

def func1():
    raise Exception
class SomeError(Exception): pass
def func2():
    raise SomeError
if __name__ == "__main__":
    try:
        func1()
    except SomeError:
        print("Some error happened")
    else:
        print("No error happened")
    finally:
        print("Do something")

Python中更倾向于使用try...except...这样的语句来代替if...else..语句。

以上就是Python异常对象异常捕捉及Exception基础类的详细内容,更多关于Python对象Exception类异常捕捉的资料请关注编程网其它相关文章!

免责声明:

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

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

Python异常对象Exception基础类异常捕捉

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

下载Word文档

猜你喜欢

python 捕捉所有异常

原文链接:http://blog.csdn.net/yangchao228/article/details/7425410如果你在写程序时遇到异常后想进行如下处理的话请参考我下面写的对异常处理的方法:假设有下面的一段程序:try:    语
2023-01-31

Python捕捉异常举例分析

这篇文章主要讲解了“Python捕捉异常举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python捕捉异常举例分析”吧!1.python中的异常语法错误:没有按照语法规则书写程序运行
2023-06-21

Python面向对象之异常捕获(一)--

大部分的异常都继承自Exception这个类(而这个类有继承自BaseException这个类)ValueErrorTypeErrorIndexError  下面这个类的作用是:添加偶数到列表中去。# 添加偶数到列表中:这个类继承了内置的l
2023-01-31

Python基础:异常处理

如何处理异常  无论发生什么情况,finally block 中的语句都会被执行,哪怕前面的 try 和 excep block 中使用了 return 语句。import systry: f = open('file.txt', '
2023-01-31

Python基础之(九)错误和异常

>>> for i in range(10) File "", line 1 for i in range(10) ^SyntaxError: invalid syntax上面那句话因
2023-01-31

python基础学习15----异常处理

异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。1.异常的类型异常的类型多种多样,常见的异常有:AttributeError 试图访问一个对象没有的属性,比如fo
2023-01-30

C++ 技术中的异常处理:如何通过基类指针来捕获派生类异常?

c++++ 中可通过基类指针捕获派生类异常。利用虚函数和 try-catch 块,我们可以:抛出派生类异常使用基类指针捕获它通过删除基类指针自动释放派生类对象C++ 中异常处理:通过基类指针捕获派生类异常在 C++ 中,异常处理是一种处理
C++ 技术中的异常处理:如何通过基类指针来捕获派生类异常?
2024-05-09

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

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

Python基础中所出现的异常报错总结

今天我们来探索python中大部分的异常报错首先异常是什么,异常白话解释就是不正常,程序里面一般是指程序员输入的格式不规范,或者需求的参数类型不对应,不全等等。 打个比方很多公司年终送苹果笔记本,你程序话思维以为是(MAC)电脑笔记本,结果
2022-06-04

编程热搜

  • 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动态编译

目录