У меня есть некоторый код внутри блока try, который выдает ошибку ValueError. У меня есть блок кроме, который ловит этот ValueError и обрабатывает его. Как только это будет сделано, я не хочу, чтобы другие блоки блокировали этот ValueError, кроме блоков.
В приведенном ниже коде есть еще одна попытка, кроме блока в коде, и эта ошибка ValueError перехватывается второй, кроме нее. Как я могу убедиться, что ValueError перехватывается только первым, кроме второго, а не вторым?
# Get features to plot
try: #First Try Block
raw_features_list_1 = fsobject_1.genFeature(gmm.FftClassifier.fft_features)
except ValueError: #First Except Block
pass
filtered_features_list_1 = np.array([row[0] for row in raw_features_list_1 if row is not None]).reshape(-1, 1)
try: #Second Try Block
raw_features_list_2 = fsobject_2.genFeature(gmm.FftClassifier.fft_features)
except ValueError: #Second Except Block
pass
print("I am here")
filtered_features_list_2 = np.array([row[0] for row in raw_features_list_2 if row is not None]).reshape(-1, 1)
Приведенный выше код дает мне следующий результат:
I am here
NameError Traceback (most recent call last)
<ipython-input-16-ff0067cb5362> in <module>
11 pass
12 print("I am here")
---> 13 filtered_features_list_2 = np.array([row[0] for row in raw_features_list_2 if row is not None]).reshape(-1, 1)
NameError: name 'raw_features_list_2' is not defined
Это связано с тем, что из-за ошибки ValueError, сгенерированной первым блоком Try, второй блок try не оценивается, а второй блок Except оценивается напрямую.
Я хотел бы оценить первые пробные блоки, обработать ошибку ValueError в первом блоке, кроме. Затем оцените второй Try Blocks и, если он генерирует ValueError, обработайте его во втором Except Block.