python 打印完整异常问题

目录
  • python打印完整异常
  • python异常捕获与打印
    • 为什么要进行异常捕获?
    • 异常捕获是捕获什么?
    • 异常捕获的代码格式?
    • 打印异常
    • 常见异常

python打印完整异常

import traceback
if __name__ == "__main__":
    try:
        print(1/0)
    except Exception:
        print(traceback.format_exc())

python异常捕获与打印

为什么要进行异常捕获?

在python程序中如果代码中有异常,不进行异常捕获的话,代码遇到异常就会终止运行,影响程序的健壮性,故要进行异常捕获处理,使得程序遇到不可知的异常,不会终止,在exception代码块中进行异常处理后继续后面的代码执行。

异常捕获是捕获什么?

* 异常类型
* 异常追踪信息
*  异常内容

异常捕获的代码格式?

try:
    {content code}
except Exception as e:
    print("substitude exception,type={},content={}".format(repr(e),e))#y
else:
    print("code exec correct")#没有遇到异常,可以省略
finally:
     print("finnally echo")#无论是否遇到异常都会执行这段内容,先执行exception处理,后执行finally

利用raise自己定义异常并抛出,抛出的异常必须继承一个已有的异常类型,如TypeError(“param must be dict”)

def func3(p):
    if type(p)!= dict:
        raise TypeError("param must be dict")
    else:
        print(p)
if __name__ == '__main__':
 try:
    func3("123")
 except Exception as e:
    print("exception,type={},content={}".format(repr(e),e))
 finally:
     print("finnally echo")
    --------------------
    打印结果
    exception,type=TypeError('param must be dict'),content=param must be dict
finnally echo

打印异常

代码举例:

try:
    str2json = json.loads(str)
    return jsonpath.jsonpath(str2json,expr)
except Exception as e:
    cls.logger.info('collectjson exception = {}'.format(str(e)))

repr(e) 打印异常的类型 ,如在json转字符串时,传入一个字符串,那么会抛异常,repr(e)打印的是 JSONDecodeError('Extra data: line 1 column 8 (char 7)',清晰的看出来这个是json转换出了问题

str(e) 打印问题代码的具体问题行

Traceback (most recent call last):
  File "D:/python-workspace/iaminterfaceTest/jsonUtil.py", line 14, in collectjson
    str2json = json.loads(str)
  File "D:\python37\Lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "D:\python37\Lib\json\decoder.py", line 340, in decode
    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 8 (char 7)

常见异常

  • IOError 文件读写异常,一般是文件不存在或者文件不可写入
  • ImportError 无法导入模块或者对象,主要是路径有误或名称错误
  • TypeError 类型转换异常
  • KeyError ditc读取key值不对,一般是不存在这个key值

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python错误处理详解

    在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因.在操作系统提供的调用中,返回错误码非常常见.比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返回-1. 用错误码来表示是否出错十分不便,因为函数本身应该返回的正常结果和错误码混在一起,造成调用者必须用大量的代码来判断是否出错: 复制代码 代码如下: def foo():     r = some_function()     if r==(-1):       

  • python中的错误处理

    用错误码来表示是否出错十分不便,因为函数本身应该返回的正常结果和错误码混在一起,造成调用者必须用大量的代码来判断是否出错: def foo(): r = some_function() if r==(-1): return (-1) # do something return r def bar(): r = foo() if r==(-1): print 'Error' else: pass 但是Go就是这么干的,哈哈! python 中还是用try - except-.finally这种方式

  • Python基础异常处理梳理总结

    目录 前言 一.常见的Python异常 AssertionError:断言语句(assert)失败 AttributeError:尝试访问未知的对象属性 IndexError:索引超出序列的范围 KeyError:字典查找一个不存在的关键字 NameError:尝试访问一个不存在的变量 OSError:操作系统产生的异常 SyntaxError:Python的语法错误 TypeError:不同类型间的无效操作 ZeroDivisionError:除数为零 二.try-except语句 三.对多个

  • Python异常信息的不同展现方法总结

    目录 简介 Exception Hooks 自定义Exception Hooks 第三方库中的Exception Hooks 结论 简介 在日常开发中,我们的大部分时间都会花在阅读traceback模块信息以及调试代码上.本文我们将改进traceback模块,让其中的提示信息更加简洁准确. 基于这一目的,我们将会自定义Exception Hooks(异常处理钩子),用来去除traceback中的冗余信息,只留下解决报错所需的内容.此外,我还会介绍一些好用的第三方库,你可以直接使用其中的Excep

  • Python异常 ValueError的问题

    目录 Python异常 ValueError 规避方法 规避方法:避免使用encoding关键字 Python异常 ValueError ValueError: invalid literal for int() with base 10: '*' 试图将一个与数字无关的类型转化为整数,会抛出该异常. >>> int("99 years ago.") Traceback (most recent call last):   File "<stdin&g

  • Python常见异常处理总结

    目录 异常处理介绍 语法报错 异常处理 解决方法 抛出异常 自定义异常 其他内置函数 总结 异常处理介绍 在实际的开发中,我们经常遇到一些报错的例子,在pycharm的显示页面下,当我们看到一串串的红色的英文字母的时候,就是出现异常,这个时候如果英文好一点的童鞋,就可以按照它的提示,自己去解决.但是英文是很多的童鞋的软肋,不过你也不要担心,这个时候你就需要有一个翻译神器,我使用的是网易有道词典,不过有时候我们还是会遇到一些比较生僻的表达,所以本期文章我们就一起来看看关于Python实际开发过程中

  • Python错误处理操作示例

    本文实例讲述了Python错误处理操作.分享给大家供大家参考,具体如下: 同java一样,在python中也有try...except...finaly的错误处理机制 try: print('try...') r=5/0 print('result:',r) except ZeroDivisionError as e: print('except',e) finally: print('finally....') print('end') 比如上面这串代码,因为被除数不能为0所以在try中会出现

  • python 打印完整异常问题

    目录 python打印完整异常 python异常捕获与打印 为什么要进行异常捕获? 异常捕获是捕获什么? 异常捕获的代码格式? 打印异常 常见异常 python打印完整异常 import traceback if __name__ == "__main__": try: print(1/0) except Exception: print(traceback.format_exc()) python异常捕获与打印 为什么要进行异常捕获? 在python程序中如果代码中有异常,不进行异常

  • python打印异常信息的两种实现方式

    1. 直接打印错误 try: # your code except KeyboardInterrupt: print("quit") except Exception as ex: print("出现如下异常%s"%ex) 如下例子 try: 2/0 except Exception as e: print(e) 结果为:division by zero 2. 用traceback模块打印 上述结果看不到具体错误的信息,如行数啥的,不方便调试的时候定位,因此也可以用

  • python自动化测试之异常及日志操作实例分析

    本文实例讲述了python自动化测试之异常及日志操作.分享给大家供大家参考,具体如下: 为了保持自动化测试用例的健壮性,异常的捕获及处理,日志的记录对掌握自动化测试执行情况尤为重要,这里便详细的介绍下在自动化测试中使用到的异常及日志,并介绍其详细的用法. 一.日志 打印日志是很多程序的重要需求,良好的日志输出可以帮我们更方便的检测程序运行状态.Python标准库提供了logging模块,切记Logger从来不直接实例化,其好处不言而喻,接下来慢慢讲解Logging模块提供了两种记录日志的方式.

  • Python错误和异常总结详细

    目录 1.语法错误 2.异常 3.try...except...语句 4.多个except子句 5.try...except Exception as e语句 6.try...except...finally语句 7.with...语句 写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细且不失通俗地总结一下python中的错误和异常. 先抛出两个问题: 什么是Python错误和异常? 如何处理Python错误和异常? 1.语法错误 语法错误可能是初学者最常遇到的,如下面熟

  • Python 错误和异常代码详解

    程序中的错误一般被称为 Bug,无可否认,这几乎总是程序员的错... 程序员的一生,始终伴随着一件事 - 调试(错误检测.异常处理).反反复复,最可怕的是:不仅自己的要改,别人的也要改...一万头草泥马奔腾而过! 错误 程序错误,主要分为三类: 语法错误 逻辑错误 运行时错误 语法错误 语法错误(也称:解析错误):是指不遵循语言的语法结构引起的错误(程序无法正常编译/运行). 在编译语言(例如:C++)中,语法错误只在编译期出现,编译器要求所有的语法都正确,才能正常编译.不过对于直译语言(例如:

  • python 自定义异常和异常捕捉的方法

    异常捕捉: try: XXXXX1 raise Exception("xxxxx2") except (Exception1,Exception2,--): xxxx3 else: xxxxx4 finally: xxxxxxx5 1.raise 语句可以自定义报错信息,如上. 2. raise后的语句是不会被执行了,因为已经抛出异常,控制流将会跳到异常捕捉模块. 3. except 语句可以一个except后带多个异常,也可以用多个语句捕捉多个异常,分别做不同处理. 4. excep

  • 基于python traceback实现异常的获取与处理

    这篇文章主要介绍了基于python traceback实现异常的获取与处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.traceback.print_exc() 2.traceback.format_exc() 3.traceback.print_exception() 简单说下这三个方法是做什么用的: 1.print_exc():是对异常栈输出 2.format_exc():是把异常栈以字符串的形式返回,print(traceback

  • Logger.error打印错误异常的详细堆栈信息

    一.问题场景 使用Logger.error方法时只能打印出异常类型,无法打印出详细的堆栈信息,使得定位问题变得困难和不方便. 二.先放出结论 Logger类下有多个不同的error方法,根据传入参数的个数及类型的不同,自动选择不同的重载方法. 当error(Object obj)只传入一个参数时会将异常对象作为Object使用,并最终当做String打印出来,当使用两个参数error(String message, Throwable t),且第二个参数为Throwable时,才会将完整的异常堆

  • 浅谈Python中的异常和JSON读写数据的实现

    异常可以防止出现一些不友好的信息返回给用户,有助于提升程序的可用性,在java中通过try ... catch ... finally来处理异常,在Python中通过try ... except ... else来处理异常 一.以ZeroDivisionError为例,处理分母为0的除法异常 def division(numerator,denominator): result=numerator/denominator return result ret1=division(1,5) prin

  • 使用Python将Exception异常错误堆栈信息写入日志文件

    假设需要把发生异常错误的信息写入到log.txt日志文件中去: import traceback import logging logging.basicConfig(filename='log.txt', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') try: raise Exception('发生异常错误信息') except: #方案一,自己定义一个文件,自己把错误堆栈信息写入文件. #er

随机推荐