尝试:/except:pass不继续到脚本的其余部分?

2024-05-29 02:53:44 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我剧本的一部分:

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长度没有定义?你知道吗

怎么回事?你知道吗


Tags: readdatalenfigpltcamerax2try
3条回答

这是:

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

在我的系统里。我猜你在引用第二个try-catch块之后的read2length。你知道吗

注意其他人所说的“除了:通过”是不好的练习。你知道吗

如果表达式len(reads[1])抛出异常(例如,IndexError),那么名称read2length永远不会分配给。你知道吗

如果您的下一个try块尝试使用该名称,那么这将导致异常。你知道吗

你真的不应该使用pokemon exception handling(你真的不想把它们都抓住)。使异常处理尽可能接近异常抛出代码,并且只处理特定的异常。你知道吗

例如,如果您想处理reads[1]抛出索引错误,那么只处理该异常

try:
    read2length = len(reads[1])
except IndexError:
    # not enough elements here; assume 0
    read2length = 0
else:
    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'))

现在read2length总是绑定到一个整数。你知道吗

如果read2length没有定义,那么问题出在第2行,len(reads[1])抛出异常。你知道吗

reads打印出来看看,为什么。你知道吗

您还应修改except: pass并使用:

except:
    print "Unexpected error:", sys.exc_info()[0]

别忘了导入sys before

相关问题 更多 >

    热门问题