找到 10786 篇文章 关于 Python

如何获取 Python 异常文本?

Rajendra Dharmkar
更新于 2019-09-26 20:03:49

970 次浏览

如果 Python 代码抛出异常,我们可以捕获它并打印类型、错误消息、回溯,并获取有关异常发生位置(Python 脚本中的文件名和行号)的信息。我们可以找到错误的类型、值、回溯参数。ErrorType 提供了已发生异常的类型;value 包含错误消息;traceback 包含堆栈快照以及有关错误消息的许多其他信息细节。sys.exc_info() 函数返回这三个属性的元组,并且 raise 语句具有接受这三个部分的三参数形式。在示例中获取异常类型、文件编号和行号... 阅读更多

你将如何解释 Python 中的异常是一个对象?

Rajendra Dharmkar
更新于 2019-09-26 20:04:17

173 次浏览

是的,在给定的代码中,“err”是一个异常对象。在 Python 中,一切都是对象。并且每个对象都有属性和方法。因此,异常就像列表、函数、元组等,也是对象。所以异常也像其他对象一样具有属性。这些属性可以设置和访问如下。有一个基类异常,几乎所有其他异常都是其子类。如果 e 是一个异常对象,则 e.args 和 e.message 是它的属性。在当前的 Python 实现中,异常由三个部分组成:类型、值和回溯。sys 模块描述了当前的异常... 阅读更多

如何在 Python 中处理由 except 子句抛出的异常?

Rajendra Dharmkar
更新于 2020-02-12 11:01:09

168 次浏览

我们有一个场景,其中 except 子句中的代码本身会引发异常。在给定的代码中,我们可以如下处理 except 子句引发的异常。示例import sys try: a = john except: try: 4/0 except: print sys.exc_info() 输出我们得到以下输出"C:/Users/TutorialsPoint1/~.py" (, ZeroDivisionError('integer division or modulo by zero',), )

如何捕获并打印 Python 异常消息?

Rajendra Dharmkar
更新于 2020-02-12 11:02:12

2K+ 次浏览

Python 异常消息可以通过以下两种代码示例中所示的不同方式捕获和打印。在第一个示例中,我们使用异常对象的 message 属性。示例try: a = 7/0 print float(a) except BaseException as e: print e.message输出integer division or modulo by zero在给定代码的情况下,我们导入 sys 模块并使用 sys.exc_value 属性来捕获和打印异常消息。示例import sys def catchEverything(): try: a = 'sequel' b = 0.8 print a + b except Exception as e: print sys.exc_value catchEverything()输出cannot concatenate 'str' and 'float' objects

为什么 Python 异常被命名为“Error”(例如 ZeroDivisionError、NameError、TypeError)?

Rajendra Dharmkar
更新于 2019-07-30 22:30:20

120 次浏览

我们看到大多数异常的名称以单词“error”结尾,表明它们是错误,这本来就是异常的含义。从狭义上讲,错误指的是 Python 中的语法错误,而运行时发生的错误称为异常。我们知道类在名称中没有“class”;类似地,变量的名称也没有以“variable”结尾,依此类推。因此,没有必要要求异常的名称以“exception”结尾。考虑一下;并非所有异常都是错误。SystemExit、KeyboardInterrupt、StopIteration、GeneratorExit 都是异常,而不是... 阅读更多

如何在现代 Python 中声明自定义异常?

Rajendra Dharmkar
更新于 2019-09-26 20:13:52

165 次浏览

为了覆盖某些内容或将额外参数传递给异常,我们在现代 Python 中这样做:class ValidationError(Exception): def __init__(self, message, errors): super(ValidationError, self).__init__(message) self.errors = errors这样,我们可以将错误消息字典传递给第二个参数,并在以后需要时获取它。

记录 Python 异常的最佳方法是什么?

Rajendra Dharmkar
更新于 2020-02-12 11:03:39

348 次浏览

我们导入 logging 模块,然后使用 logging.exception 方法创建 Python 异常的日志。示例import logging try: print 'toy' + 6 except Exception as e: logging.exception("这是一个异常日志")输出我们得到以下输出ERROR:root:这是一个异常日志 Traceback (most recent call last): File "C:/Users/TutorialsPoint1/PycharmProjects/TProg/Exception handling/loggingerror1.py", line 3, in print 'toy' + 6 TypeError: cannot concatenate 'str' and 'int' objects需要注意的是,在 Python 3 中,我们必须仅在 except 部分内部调用 logging.exception 方法。如果我们在任何其他地方调用此方法,根据警报,我们可能会遇到奇怪的异常... 阅读更多

如何在 Python 中手动抛出/引发异常?

Rajendra Dharmkar
更新于 2020-02-12 11:04:46

193 次浏览

我们使用最适合我们特定问题的特定异常构造函数,而不是引发通用异常。要捕获我们的特定异常,我们必须捕获所有其他作为其子类的更具体的异常。我们应该引发特定的异常并处理相同的特定异常。要引发特定的异常,我们使用 raise 语句,如下所示。示例import sys try: f = float('Tutorialspoint') print f raise ValueError except Exception as err: print sys.exc_info()输出我们得到以下输出(, ValueError('could not convert string to float: Tutorialspoint', ), )我们甚至可以像以下示例一样带参数引发错误示例try: raise ValueError('foo', 23) except ValueError, e: ... 阅读更多

Python 3 中是否有使用异常链的标准方法?

Rajendra Dharmkar
更新于 2019-09-27 10:47:31

232 次浏览

在处理一个异常“A”的过程中,可能会发生另一个异常“B”。在 Python 2.0 版本中,如果发生这种情况,异常 B 会向外传播,而异常 A 会丢失。为了调试问题,了解这两种异常很有用。有时,异常处理程序有意重新引发异常很有用,无论是为了提供额外的信息还是将异常转换为另一种类型。__cause__ 属性提供了一种记录异常的直接原因的明确方法。异常链仅在 Python 3 中可用。Python 3 具有 raise ... ... 阅读更多

解释 Python 中的 Try、Except 和 Else 语句。

Rajendra Dharmkar
更新于 2020-02-12 11:17:53

949 次浏览

在 Python 中处理异常的常用方法是使用“try-except”块。我们甚至可以在 except 子句之后包含 else 子句。如果 try 语句中没有异常,则执行 else 块中的语句。如果并且只有当控制流从 try 子句末尾流出时,才会执行可选的 else 子句,但在发生异常或执行 return、continue 或 break 语句的情况下除外。示例给定的代码可以重写如下a = [11, 8, 9, 2] try: foo = a[3] except: print "索引超出范围" else: print "索引正常... 阅读更多

广告