Python异常处理与程序调试

Python异常处理与程序调试

Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性。异常处理还具有释放对象,中止循环的运行等作用。在程序运行的过程中,如果发生了错误,可以返回事先约定的一个错误代码。

"try...except"语句

用于处理问题语句,捕获可能存在的异常。try子句的代码块中放置的可能出现异常的语句,except子句中的代码用于处理异常。当异常出现时,Python会自动生成一个异常对象。

>>> try:
...     f = open('test.txt', 'r')
...     print("该文件是正常的")
    # 捕获IO异常
... except IOError:
...     print("该文件不存在")
    # 其他异常情况
... except:
...     print('程序异常')
... else:
...     print('文件打开成功')
        f.close()
该文件不存在
>>> 

try...except后边还可以添加一个finally语句,无论异常是否发生,finally子句都会被执行。所有finally子句均用于关闭因异常而不能释放的系统资源。

try:
    f = open('test.txt', 'r')
    try:
        print(f.read())
    except:
        print('该文件是正常的')
    finally:
        print('释放资源')
        f.close()
except IOError:
    print('文件不存在')

with...as

with...as(上下文管器)可以很简洁的实现以上功能

with open('test.txt', 'r') as f:
    f.write('hrllo ')
    f.write('world ')

with...as可以处理出现异常的情况,并且避免了在open()一个文件后忘记写close()方法的情况

raise

当程序出现错误时,Python会自动引发异常,也可以通过raise语句显示引发的异常,一旦执行了raise语句,raise语句后的代码将不能被执行

try:
    s = None
    if s is None:
        print('s是空对象')
        raise NameError
    print(len(s))
except TypeError:
    print('空对象是没有长度的')

s是空对象
Traceback (most recent call last):
  File "异常处理.py", line 21, in <module>
    raise NameError
NameError

Python程序调试

一般用到的程序调试方法

  • print方法
  • 断言(assert)方法
  • logging模块
  • pdb
  • 编辑器自带的调试功能

断言(assert)方法,用于检测某个表达式是否为真

>>> assert 1 == 0, '1 不等于 0'        # '1 不等于 0' 是为断言语句加的异常参数
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError: 1 不等于 0
>>> 

logging模块

如果Python程序代码量到了一定数量,使用logging模块是一个很好的选择,logging不仅可以输出到控制台,还可以写入文件,还可以使用TCP将日志发送到网络。

import logging

logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

# 输出结果:
WARNING:root:warning message
ERROR:root:error message
CRITICAL:root:critical message

默认情况下,logging模块将日志打印到屏幕(stdout),日志级别为WARNING(只有日志级别高于WARNING的日志才会输出)

pdb

Python的调试器,可以让程序单步执行,随时查看程序运行状态

执行python3 -m pdb test.py

"l"表示查看代码完整内容,"n"表示一步一步执行代码,"p+变量名"可以随时打印出程序的变量名,"q"退出

原文地址:https://www.cnblogs.com/dhzg/p/11361272.html

时间: 2024-10-30 01:45:15

Python异常处理与程序调试的相关文章

零基础学Python--------第9章 异常处理及程序调试

第9章 异常处理及程序调试 9.1 异常概述 在程序运行过程中,经常会遇到各种各样的错误,这些错误统称为“异常”.这些异常有的是由于开发者将关键字敲错导致的,这类错误多数产生的是SyntaxError:invalid syntax(无效的语法),这将直接导致程序不能运行.这类异常是显式的,在开发阶段很容易被发现.还有一类是隐式的,通常和使用者的操作有关. 实例01:模拟幼儿园分苹果 def division(): '''功能:分苹果''' print("\n===================

Python异常处理机制、调试、测试

类似于Java的try..catch..finally Java的为try_except_finally try: print('try...') r = 10 / 0 print('result:', r) except ZeroDivisionError as e: print('except:', e) finally: print('finally...') print('END') try执行一段可能会发送异常的代码,如果有异常情况发送 走except , 如果没有则不走,最后不管代码

09、异常处理和程序调试

1.异常的处理:常见异常有除零.下标越界等. 2.try:处理异常,有缩进结构,有可选的else语句块.形式如下: . 图1:捕捉所有异常 图2:捕捉指定异常 图3:不管是否有异常,finally语句也会被执行 . 3.except语句有以下几种用法: 4.raise:手动引发异常.有一下几种使用方式: 5.捕捉并打印出异常: 来自为知笔记(Wiz)

python -- 程序异常与调试(程序调试)

一.程序调试 A.使用assert语句检测程序代码中的错误. assert 表达式[, 参数] 如果表达式为True,则继续往下运行:如果为False,则抛出一个AssertionError异常,并且输出asser语句的参数作为错误信息字符串. B.使用日志模块logging打印跟踪信息,调试程序. import logging logging.basicConfig(level=logging.DEBUG) logging.info() C.使用PyCharm的调试器调试序(Debug). #

Python 异常处理

Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. 断言(Assertions):本站Python教程会具体介绍. python标准异常 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 StopIter

Python异常处理

1.异常概述 (1)异常:Python用异常对象来表示异常情况,遇到错误后,会引发异常,如果异常对象未被处理捕捉,程序就会用所谓的回溯终止执行 (2)异常处理:程序出现bug时不将错误信息显示给用户,而是现实一个提示的页面 2.常见python 异常: (1)AttributeError:试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x (2)IOError:输入/输出异常:基本上是无法打开文件 (3)ImportError:无法引入模块或包:基本上是路径问题或名称错误 (4)I

十一、Python异常处理

Python异常处理 异常抛出机制,为程序开发人员提供了一种在运行时发现错误,进行回复处理,然后继续执行的能力 #!/usr/bin/python try: open('abc.txt') except IOError,msg: pass 抛出机制: 如果在运行时发生异常的话,解释器会查找相应的处理语句(称为handler) 要是在当前函数力没有找到的话,它会将异常传递给上层的调用函数,看看那里能不能处理 如果在最外层(全局"main")还是没有找到的话,解释器就会退出,同时打印出tr

python异常处理和面向对象编程总结

异常处理和面向对象编程,是python编程中,比较重要的基础.在实际生产编程设计和开发中,异常处理和面向读象都是必须在设计和开发过程中充分考虑的.    对于python开发和面向对象这两部分基础,用一个python程序进行封装说明,结果如下: #!/usr/bin/env python # _*_ coding:utf-8 _*_ ################# #异常处理 ################# print ''' 异常处理是用于处理软件或信息系统中出现的异常状况的一种机制,

Python 代码使用pdb调试技巧

Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的 bug.python 提供了一系列 debug 的工具和包,可供我们选择.本文将主要阐述如何利用 python debug 相关工具进行 debug. 使用 pdb 进行调试 pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了一些常用的调试命令,详情见表