Python try:/except:传递不继续到脚本的其余部分?

Python try:/except:传递不继续到脚本的其余部分?,python,try-catch,except,Python,Try Catch,Except,这是我脚本的一部分: try: read2length = len(reads[1]) x2 = data[read1length:read1length+read2length,0] y2 = data[read1length:read1length+read2length,1] fig = plt.figure() plt.bar(x2,y2, align='center') fig.suptitle('Read 2 Camera Ti

这是我脚本的一部分:

try:    
    read2length = len(reads[1])
    x2 = data[read1length:read1length+read2length,0]
    y2 = data[read1length:read1length+read2length,1]
    fig = plt.figure()
    plt.bar(x2,y2, align='center')
    fig.suptitle('Read 2 Camera Timeouts', fontsize=20)
    plt.xlabel('Cycle', fontsize=18)
    plt.ylabel('#', fontsize=16)
    if read2length < 50:
        plt.xticks(x1, fontsize=14)
    fig.savefig(join((path),'Read 2 Camera Timeouts.jpg'))
except: pass 
try:
    read3length = len(reads[2])
    x3 = data[read1length+read2length:read1length+read2length+read3length,0]
    y3 = data[read1length+read2length:read1length+read2length+read3length,1]
    fig = plt.figure()    
    plt.bar(x3,y3, align='center')
    fig.suptitle('Read 3 Camera Timeouts', fontsize=20)
    plt.xlabel('Cycle', fontsize=18)
    plt.ylabel('#', fontsize=16)
    if read3length < 50:
        plt.xticks(x1, fontsize=14)
    fig.savefig(join((path),'Read 3 Camera Timeouts.jpg'))
except: pass          
我希望脚本尝试第一个和第二个。无论它们是否有效,我都希望脚本继续

我一直在读2长度没有定义

发生什么事了

如果未定义read2length,则问题出现在第2行,其中lenreads[1]引发异常

打印读数以查看原因

您还应修改您的除外:通行证和使用证:

请不要忘记在导入sys之前

如果表达式lenreads[1]引发异常,例如indexer,则不会将名称read2length指定给

如果您的下一个try块仍然尝试使用该名称,那么这将导致异常

你真的不应该用你不想抓住他们,真的。使异常处理尽可能接近异常引发代码,并且只处理特定的异常

例如,如果要处理引发索引错误的读取[1],则只处理该异常:


现在read2length总是绑定到一个整数。

您在第一次尝试时在此处定义read2length:

try:    
    read2length = len(reads[1])
这意味着,如果尝试失败,则永远不会定义read2length。因此,当您尝试在第二次尝试中使用它时:

try:
    read3length = len(reads[2])
    x3 = data[read1length+read2length:read1length+read2length+read3length,0]
    y3 = data[read1length+read2length:read1length+read2length+read3length,1]
由于UDNEFIED变量,它将始终失败

通过在第一次尝试时执行“除外”来更改它:

except:
    read2length = 0
编辑:Martijn也打败了我,但他的答案更好,因为你不应该有一般例外或使用pass。

这:

try:    
    read2length = len(reads[1])
    x2 = data[read1length:read1length+read2length,0]
    y2 = data[read1length:read1length+read2length,1]
    fig = plt.figure()
    plt.bar(x2,y2, align='center')
    fig.suptitle('Read 2 Camera Timeouts', fontsize=20)
    plt.xlabel('Cycle', fontsize=18)
    plt.ylabel('#', fontsize=16)
    if read2length < 50:
        plt.xticks(x1, fontsize=14)
    fig.savefig(join((path),'Read 2 Camera Timeouts.jpg'))
except: pass 
try:
    read3length = len(reads[2])
    x3 = data[read1length+read2length:read1length+read2length+read3length,0]
    y3 = data[read1length+read2length:read1length+read2length+read3length,1]
    fig = plt.figure()    
    plt.bar(x3,y3, align='center')
    fig.suptitle('Read 3 Camera Timeouts', fontsize=20)
    plt.xlabel('Cycle', fontsize=18)
    plt.ylabel('#', fontsize=16)
    if read3length < 50:
        plt.xticks(x1, fontsize=14)
    fig.savefig(join((path),'Read 3 Camera Timeouts.jpg'))
except: pass
print 'foo'
在我的系统上。我猜您在第二个try-catch块之后引用了read2length

请注意其他人都在说什么,除了:通过糟糕的练习。

必须阅读:你不应该尝试……除了。。。没有选择异常。请参阅以了解如何处理异常。
except:
    read2length = 0
try:    
    read2length = len(reads[1])
    x2 = data[read1length:read1length+read2length,0]
    y2 = data[read1length:read1length+read2length,1]
    fig = plt.figure()
    plt.bar(x2,y2, align='center')
    fig.suptitle('Read 2 Camera Timeouts', fontsize=20)
    plt.xlabel('Cycle', fontsize=18)
    plt.ylabel('#', fontsize=16)
    if read2length < 50:
        plt.xticks(x1, fontsize=14)
    fig.savefig(join((path),'Read 2 Camera Timeouts.jpg'))
except: pass 
try:
    read3length = len(reads[2])
    x3 = data[read1length+read2length:read1length+read2length+read3length,0]
    y3 = data[read1length+read2length:read1length+read2length+read3length,1]
    fig = plt.figure()    
    plt.bar(x3,y3, align='center')
    fig.suptitle('Read 3 Camera Timeouts', fontsize=20)
    plt.xlabel('Cycle', fontsize=18)
    plt.ylabel('#', fontsize=16)
    if read3length < 50:
        plt.xticks(x1, fontsize=14)
    fig.savefig(join((path),'Read 3 Camera Timeouts.jpg'))
except: pass
print 'foo'
$ python q2.py
foo