У меня есть код, который разлагает волну на составляющие частоты и строит эти составляющие. Вот метод построения графика:
def plot_components(self):
try:
N = self.rate * self.time
t_vec = np.arange(N) * self.period
fig, axes = plt.subplots(len(self.components), 1)
for i, wave in enumerate(self.components):
axes[i].plot(t_vec, wave)
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.show()
except ValueError:
print('plt_components: Encoder must be fit against composite wave before plotting')
raise
Он отлично работает, если возвращаются несколько волновых компонентов. Иногда либо волна не имеет никаких компонентов, кроме самой себя, либо иногда алгоритм может идентифицировать только один компонент. В этом случае одноэлементная волна составляет список компонентов, и я получаю эту ошибку:
TypeError: 'AxesSubplot' object is not subscriptable
Я думал о том, чтобы обработать это с помощью другого оператора except
:
except TypeError:
axes.plot(t_vec, self.components[0])
plt.show()
И это действительно работает. Однако я не уверен, что это правильное использование обработки ошибок? Я немного новичок в идее остановки / обработки ошибок и хочу знать, нормально ли то, что я сделал, на практике.
Думаю, моя нервозность возникает из-за того, что я задаюсь вопросом: «Что, если другой TypeError
будет брошен для причина, по которой я не ожидал? "