`
aeritheve
  • 浏览: 33850 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
社区版块
存档分类
最新评论

Python学习——异常

阅读更多

异常

 

        当你的程序中出现某些异常的状况的时候,异常就发生了。例如,当你想要读某个文件的时候,而那个文件不存在。或者在程序运行的时候,你不小心把它删除了。上述这些情况可以使用异常来处理。
        假如你的程序中有一些无效的语句,会怎么样呢?Python会引发并告诉你那里有一个错误,从而处理这样的情况。

  • try..except

        1.处理异常
        我们可以使用try..except语句来处理异常。我们把通常的语句放在try-块中,而把我们的错误处理语句放在except-块中。
        处理异常的例子如下:

import sys
try:
    s = raw_input('Enter something --> ')
except EOFError:
    print '\nWhy did you do an EOF on me?'
    sys.exit()
except:
    print '\nSome error/exception occurred.' 
print 'Done'

        输出:

Enter something --> +
Done

        我们把所有可能引发错误的语句放在try块中,然后在except从句/块中处理所有的错误和异常。
        except从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理所有的错误和异常。对于每个try从句,至少都有一个相关联的except从句。
        如果某个错误或异常没有被处理,默认的Python处理器就会被调用。它会终止程序的运行,并且打印一个消息,我们已经看到了这样的处理。
        还可以让try..catch块关联上一个else从句。当没有异常发生的时候,else从句将被执行。

        2.引发异常
        我们还可以得到异常对象,从而获取更多有个这个异常的信息。
        可以使用raise语句引发异常。你还得指明错误/异常的名称和伴随异常触发的异常对象。你可以引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。
        如何引发异常的例子如下:

class ShortInputException(Exception):
    '''A user-defined exception class.'''
    def __init__(self, length, atleast):
        Exception.__init__(self)
        self.length = length
        self.atleast = atleast
try:
    s = raw_input('Enter something --> ')
    if len(s) < 3:
        raise ShortInputException(len(s), 3)
except EOFError:
    print '\nWhy did you do an EOF on me?'
except ShortInputException, x:
    print 'ShortInputException: The input was of length %d, \
          was expecting at least %d' % (x.length, x.atleast)
else:
    print 'No exception was raised.' 

        输出:

Enter something --> 2222
No exception was raised.
Enter something --> 1
ShortInputException: The input was of length 1,           was expecting at least 3

        这里,我们创建了我们自己的异常类型,其实我们可以使用任何预定义的异常/错误。这个新的异常类型是ShortInputException类。它有两个域:length是给定输入的长度,atleast则是程序期望的最小长度。
        在except从句中,我们提供了错误类和用来表示错误/异常对象的变量。这与函数调用中的形参和实参概念类似。在这个特别的except从句中,我们使用异常对象的length和atleast域来为用户打印一个恰当的消息。

  • try..finally

        假如你在读一个文件的时候,希望在无论异常发生与否的情况下都关闭文件,该怎么做呢?这可以使用finally块来完成。注意,在一个try块下,你可以同时使用except从句和finally块。如果你要同时使用它们的话,需要把一个嵌入另外一个。
        使用finally例子如下:

import time

f = file('poem.txt')
try:  
    while True:
        line = f.readline()
        if len(line) == 0:
            break
        time.sleep(2)
        print line,
finally:
    f.close()
    print 'Cleaning up...closed the file' 

        输出:

Programming is fun
When the work is done
if you wanna make your work also fun:
        use Python!
Cleaning up...closed the file

        我们进行通常的读文件工作,但是我有意在每打印一行之前用time.sleep方法暂停2秒钟。这样做的原因是让程序运行得慢一些(Python由于其本质通常运行得很快)。在程序运行的时候,按Ctrl-c中断/取消程序。我们可以观察到KeyboardInterrupt异常被触发,程序退出。但是在程序退出之前,finally从句仍然被执行,把文件关闭。

分享到:
评论

相关推荐

    python——异常处理

    刚开始学习python很不容易理解,python在线教学中异常处理

    Python学习 —— 代码&amp;笔记(年11月30日、12月1日).zip

    【Python学习 —— 代码&笔记(年11月30日、12月1日)】 这篇笔记主要涵盖了在11月30日和12月1日期间进行的Python学习内容,其中包括了基本语法、数据结构、控制流程、函数、模块化编程等多个重要知识点。以下是...

    python项目 —— notepad-editor

    【Python项目——Notepad编辑器】是一个利用Python开发的简易文本编辑器,它展示了如何用Python实现一个类似Windows记事本的功能。这个项目是初学者理解Python编程、GUI设计以及文件操作的好例子。通过这个项目,...

    每天分享几个python项目 —— todoapp

    【Python项目实战——TodoApp】 在编程世界里,Python是一种广泛应用的高级编程语言,尤其在后端开发领域,它的简洁性和高效性深受开发者喜爱。"每天分享几个python项目"系列旨在通过具体的项目实践来加深对Python...

    python项目 —— rocket-flight-simulator

    "Python项目——rocket-flight-simulator"是一个利用Python编程语言实现的简单火箭飞行模拟器。这个项目专注于后端开发,通过代码模拟火箭的飞行过程,包括发射、升空、轨迹计算等关键环节。以下是对该项目涉及的...

    每天分享几个python项目 —— guess-word-hangman-game-using-python

    通过参与这个项目,学习者可以深入了解Python的函数、条件语句、循环、异常处理、字符串操作等基础语法,以及如何使用面向对象编程设计游戏类和对象。此外,还能锻炼到逻辑思维和调试技巧,对于初学者来说,这是一个...

    每天分享几个python项目 —— simple-library-system-using-python

    【Python项目实战——简易图书管理系统实现】 Python是一种广泛使用的高级编程语言,尤其在后端开发领域,它以其简洁明了的语法和丰富的库支持而受到欢迎。本项目“simple-library-system-using-python”就是一个很...

    每天分享几个python项目 —— simple-dice-roll-game-using-python

    标题 "每天分享几个python项目 —— simple-dice-roll-game-using-python" 暗示我们要讨论的是一个使用Python编程语言实现的简单骰子游戏。在这个项目中,用户可以模拟掷骰子,体验游戏的乐趣,同时也能够学习到...

    每天分享几个python项目 —— rps-game-multiplayer-using-python.zip

    "每天分享几个python项目 —— rps-game-multiplayer-using-python.zip" 这个标题表明这是一个关于Python编程的项目,具体是多人版的石头、剪刀、布游戏(RPS,Rock-Paper-Scissors)。通过这个项目,我们可以学习到...

    Python——机器学习实战——Logistic回归

    在提供的压缩包文件中,"Python——机器学习实战——Logistic回归"可能包含详细的代码示例,展示了如何运用以上概念来构建和评估一个Logistic回归模型。通过学习这个实战案例,你可以更好地理解和应用Logistic回归到...

    Python——机器学习实战——K均值聚类算法分组

    在这个"Python——机器学习实战——K均值聚类算法分组"的教程中,我们将深入探讨如何使用Python来实现这个算法。 首先,K均值算法的核心思想是通过迭代找到最佳的K个聚类中心,使得每个数据点到其所属类别中心的...

    每天分享几个python项目 —— chatapp_0

    【Python项目实战——ChatApp_0详解】 在Python开发领域,实战项目是提升技能和理解应用的绝佳方式。"ChatApp_0"就是一个基于Python构建的简单聊天应用程序,旨在帮助初学者和进阶者理解如何利用Python进行后端开发...

    Python机器学习——数据分析与评分卡建模 课件

    Python机器学习领域中,数据分析与评分卡建模是至关重要的技术环节,它们在金融、风控、市场营销等多个行业中广泛应用。评分卡是一种将复杂模型结果转化为直观分数的工具,便于业务人员理解和应用。本课件旨在深入...

    1082838225293101Python爬虫——快速批量抓取表格数据并保存至Excel中.rar

    标题中的“Python爬虫——快速批量抓取表格数据并保存至Excel中”表明这是一个关于使用Python编程语言进行网络爬虫的教程,旨在教授如何高效地抓取网页上的表格数据,并将这些数据存储到Excel文件中。这个过程通常...

    每天分享几个python项目 —— simple-quiz-system-project-in-python

    【Python项目实战——简易问答系统】 在编程学习过程中,实战项目是提升技能的重要途径,尤其是对于Python这种广泛应用的语言。本项目"simple-quiz-system-project-in-python"旨在帮助初学者和有一定基础的开发者...

    每天分享几个python项目 —— simple-console-game-using-python

    学习如何使用`try...except`块捕获和处理这些异常,是提高代码健壮性的重要一环。 8. **测试与调试**:编写游戏后,你需要进行测试以确保其正确运行。了解如何编写单元测试,以及使用调试工具(如Python的pdb模块)...

    每天分享几个python项目 —— student-record-information-system-using-python

    通过这个项目,学习者可以深入理解Python的数据库操作、GUI编程、文件操作等基础技能,同时提升问题解决和项目组织的能力。实践中遇到的问题和解决过程,都是宝贵的学习经验。如果你是初学者,不妨动手尝试搭建这个...

    每天分享几个python项目 —— simple-movie-list-system-using-python.zip

    6. 错误处理和调试:学习如何编写异常处理代码,以及如何使用调试工具查找和修复问题。 通过这个实战项目,不仅能提升Python编程技能,还能加深对后端开发流程的理解,是Python初学者提升技能的好途径。在实践中...

    每天分享几个python项目 —— guess a wordai mode game

    Python的异常处理机制(try-except)可以确保程序在遇到错误时不会崩溃。 6. **人工智能模式** "AI mode"意味着游戏会包含一定的智能化元素。这可能涉及到机器学习或简单的逻辑判断。例如,AI可以分析玩家的猜测...

    每天分享几个python项目 —— simple-race-bet-game-using-python

    "python项目实战" 暗示这是一个以实际操作为主的Python编程项目,它将理论知识与实际应用相结合,帮助学习者通过实际的项目经验来提升编程能力。这样的实践项目通常涵盖了从设计到实现的全过程,包括逻辑构建、数据...

Global site tag (gtag.js) - Google Analytics