Python try函数的显式异常问题
我必须运行代码,不管它是否失败。我正在使用Python try函数的显式异常问题,python,Python,我必须运行代码,不管它是否失败。我正在使用ExplicitException。以下是我的代码: try: G.add_edge(data1[0][0],data1[1][0],weight=data1[2+i][0]) except ExplicitException: pass try: G.add_edge(data1[0][0],data1[5][0],weight=data1[6+i][0]) except ExplicitException: pass
ExplicitException
。以下是我的代码:
try:
G.add_edge(data1[0][0],data1[1][0],weight=data1[2+i][0])
except ExplicitException:
pass
try:
G.add_edge(data1[0][0],data1[5][0],weight=data1[6+i][0])
except ExplicitException:
pass
try:
G.add_edge(data1[0][0],data1[9][0],weight=data1[10+i][0])
except ExplicitException:
pass
try:
G.add_edge(data1[0][0],data1[13][0],weight=data1[14+i][0])
except ExplicitException:
pass
我得到以下错误:
NameError:未定义名称“ExplicitException”
如果您能提供帮助,我将不胜感激。我想您是从答案中得到这个想法的。答案试图传达的想法是,您可以使用自己选择的异常。事实上,没有什么例外,比如
ExplicitException
。您可以使用中的任何异常,也可以定义自己的异常类
您还可以排除基类异常
和所有异常
试试看:
#代码
除例外情况外:
通过
编辑:虽然可以添加多个try-except块,但这不是一个好的做法。在您的情况下,我相信您的异常是由于I
的某个无效值导致的,该值会抛出越界异常。因此,您可以通过在if-else条件下检查i
的正确值来避免这种情况
如果您真的喜欢使用try-except,请尝试概括这些行并将它们合并成一个循环。这将使错误处理更容易。例如,在上述情况下:
范围(1,14,4)内j的:
尝试:
G.add_edge(data1[0][0],data1[j][0],weight=data1[1+j+i][0])
除:
通过
在您在注释中链接的线程中没有显式异常
,OP指的是显式异常类型。因为代码本身是重复的,所以您可以构建一个函数并使用它
def add_edge(first_indices, second_indices, weight_indices):
try:
G.add_edge(data1[first_indices[0]][first_indices[1]], data1[second_indices[0]][second_indices[1]], weight=data1[weight_indices[0]][weight_indices[1]])
except (IndexError, TypeError): # example to explicit exception
pass
add_edge([0, 0], [1, 0], [2 + i, 0])
add_edge([0, 0], [5, 0], [6 + i, 0])
add_edge([0, 0], [9, 0], [10 + i, 0])
add_edge([0, 0], [13, 0], [14 + i, 0])
什么是ExplicitException
?我想在try块中运行多个函数,如果函数失败,则忽略该函数,并移动到下一个函数。我找到了上面提到显式异常的链接。他指的是显式异常类型,没有ExplicitException
。有没有更快的方法。我有数百行代码。无法手动执行所有这些操作?除了
之外,不指定异常类型也会捕获sys.exit()
和键盘中断
<代码>例外情况除外
更好。