Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 请尝试除0以外的其他方法_Python - Fatal编程技术网

Python 请尝试除0以外的其他方法

Python 请尝试除0以外的其他方法,python,Python,我正在阅读不久前编写的一些python代码,并发现: try: # do some stuff except 0: # exception handling stuff 我只是不知道除了0意味着什么?我确实有我的猜测:假设什么都不捕获,即让异常传播,或者它可能是某种开关,通过删除0打开和关闭调试模式,然后0将捕获所有内容 有人能提供一些见解吗?谷歌搜索一无所获 谢谢 一些示例代码(根据请求): 据我所知,这对于调试非常有用(捕获异常类型) 在您的示例中,0充当占位符以确定异常的

我正在阅读不久前编写的一些python代码,并发现:

try:
    # do some stuff
except 0:
    # exception handling stuff
我只是不知道除了0意味着什么?我确实有我的猜测:假设什么都不捕获,即让异常传播,或者它可能是某种开关,通过删除0打开和关闭调试模式,然后0将捕获所有内容

有人能提供一些见解吗?谷歌搜索一无所获

谢谢

一些示例代码(根据请求):


据我所知,这对于调试非常有用(捕获异常类型)

在您的示例中,0充当占位符以确定异常的类型

>>> try:
...   x = 5/1 + 4*a/3
... except 0:
...   print 'error'
... 
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
NameError: name 'a' is not defined
>>> try:
...   x = 5/0 + 4*a/3
... except 0:
...   print 'error'
... 
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ZeroDivisionError: integer division or modulo by zero
从:

[…]如果结果对象与异常“兼容”,则[exception]子句与异常匹配。如果对象是异常对象的类或基类,或者是包含与异常兼容项的元组,则该对象与异常兼容

实际上,表达式的类型用于确定exception子句是否与异常匹配。因为
0
是整数类型,该类型的异常将匹配


由于整数不能作为异常引发,因此这是一个禁用的
except
类,它不会捕获任何内容。

您确定它不是编写的
except:0
?(注意冒号的位置)NPE我是阳性的,我现在正在看差异。但是我假设except:0等同于except:pass?运行它时是否有任何错误?能否向我们展示一些实际的使用示例。在没有看到他们实际编写的代码的情况下,很难猜测是谁编写了该代码。这与没有
try
-
语句是一样的,除了
语句。
except 0:
在这里实际上没有做任何事情。在except块中使用
raise
来重新引发异常也会做同样的事情,但这会节省您重新格式化(可能很长)代码块的时间(因此我猜是调试参考)。我想这是做与
raise
相同事情的另一种方法。从python文档中,except被定义为:
(“except”[expression[((“as”;”))target]]:“suite”)
-并且0是有效的表达式,因此不会失败。但是,还有更明确的引发异常的方法。在python中不能引发整数异常<代码>类型错误:异常必须是旧式类或从BaseException派生,而不是2.7上的int。3@AhmedAeonAxan你说得对。我刚试过。答案已编辑。我认为在某一点上(在遥远的过去),您可能已经能够
提高int,0
,我认为这会触发except子句中的代码。现在,该语句在运行时引发异常,而不是在解析时,因此代码可能从未更新过。
>>> try:
...   x = 5/1 + 4*a/3
... except 0:
...   print 'error'
... 
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
NameError: name 'a' is not defined
>>> try:
...   x = 5/0 + 4*a/3
... except 0:
...   print 'error'
... 
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ZeroDivisionError: integer division or modulo by zero
>>> try:
...   print 'error'
... except:
... 
KeyboardInterrupt
>>> try:
...   x = 5/0 + 4*a/3
... except:
...   print 'error'
... 
error