找到 34423 篇文章 关于编程

如何捕获和打印 Python 异常信息?

Rajendra Dharmkar
更新于 2020年2月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年7月30日 22:30:20

120 次浏览

我们可以看到,大多数异常的名称都以“error”结尾,这表明它们是错误,而这本身就是异常的含义。狭义上的错误指的是 Python 中的语法错误,而运行时发生的错误则被称为异常。众所周知,类名不以“class”结尾;同样,变量名也不以“variable”结尾,等等。因此,没有理由要求异常的名称必须以“exception”结尾。考虑一下:并非所有异常都是错误。SystemExit、KeyboardInterrupt、StopIteration、GeneratorExit 都是异常,但并非… 阅读更多

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

Rajendra Dharmkar
更新于 2019年9月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年2月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年2月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年9月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年2月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 "索引正常" ... 阅读更多

如何在 Python 中使用没有异常的“except 子句”?

Rajendra Dharmkar
更新于 2020年2月12日 11:21:05

2K+ 次浏览

如果我们定义没有异常的 except 子句,它可以处理所有类型的异常。但是,这既不是好的编码习惯,也不推荐这样做。示例try: print 'foo'+'qux'+ 7 except: print' 发生错误'输出你将得到输出发生错误这种类型的 Python try-except 块可以处理所有类型的异常,但这对程序员查找发生哪种类型的异常没有帮助。

如何在 Python 中正确忽略异常?

Rajendra Dharmkar
更新于 2019年9月27日 07:10:07

522 次浏览

这可以通过以下代码完成try: x, y =7, 0 z = x/y except: pass或try: x, y =7, 0 z = x/y except Exception: pass这些代码绕过 try 语句中的异常并忽略 except 子句,并且不引发任何异常。上述代码的区别在于,第一个代码还将捕获 KeyboardInterrupt、SystemExit 等,这些都是直接从 exceptions.BaseException 派生的,而不是 exceptions.Exception。众所周知,Python 会记住最后抛出的异常,一些参与异常抛出语句的对象会在下一个异常之前保持活动状态。我们可能想要… 阅读更多

如何在 Python 中使用带有多个异常的“except 子句”?

Manogna
更新于 2019年9月27日 10:51:43

3K+ 次浏览

可以使用相同的 except 子句定义多个异常。这意味着如果 Python 解释器找到匹配的异常,则它将执行 except 子句下编写的代码。一般来说,多个异常的语法如下Except(Exception1, Exception2, …ExceptionN) as e:当我们以这种方式定义 except 子句时,我们期望相同的代码抛出不同的异常。此外,我们希望在每种情况下都采取行动。示例代码import sys try: d = 8 d = d + '5' except(TypeError, SyntaxError)as e: print sys.exc_info()我们得到的输出如下所示(, TypeError("unsupported operand type(s) for  +: 'int' and 'str'", ), ... 阅读更多

广告