У меня проблемы с обработкой исключения в моем коде python. Ошибка возникает при попытке 3D-интерполяции на определенной сетке, используя «линейный» метод; это приводит к QhullError. Интерполяция работает нормально, используя «ближайший». Поэтому я хочу поймать 'QhullError', используя 'try / исключением'.
Когда я запускаю код, я получаю
NameError: имя 'QhullError' не определено
Я также попробовал собственный класс для обработки исключения, но он ничего не уловил вообще ...
Есть идеи о том, что мне здесь не хватает?
Большое спасибо!
Найдите код ниже:
import numpy as np
import warnings
from scipy.interpolate import LinearNDInterpolator as Lin3DInterp
from scipy.interpolate import NearestNDInterpolator as Near3DInterp
from random import random
# %% Here I tried a custom class to handle my exception... didn't work either
# class QhullError(Exception):
# pass
# %%
# choosing interpolation method : 'linear' or 'nearest'
InterpMethod = 'linear'
# evenly spaced grid
grid_points = np.squeeze(np.array([[np.linspace(0, 9, 10)],
[np.linspace(0, 9, 10)],
[np.linspace(0, 9, 10)]]).transpose())
# some random values
grid_points_values = random()*grid_points
if InterpMethod == 'nearest':
# this works fine
interp_func = Near3DInterp(grid_points, grid_points_values)
elif InterpMethod == 'linear':
try:
# QhullError here, trying to catch that
interp_func = Lin3DInterp(grid_points, grid_points_values)
except QhullError:
warnings.warn('QhullError : linear interpolation failed, '
'using ''nearest'' method instead')
interp_func = Near3DInterp(grid_points, grid_points_values)