Jak złapać ostrzeżenie numpy, jak to jest wyjątek (nie tylko do testowania)?

Muszę zrobić wielomian Lagrange'a w Pythonie dla projektu, który robię. Robię styl barycentryczny, aby uniknąć użycia jawnej pętli for-loop, w przeciwieństwie do stylu różnicowego Newtona. Mam problem z tym, że muszę złapać podział przez zero, ale Python (a może numpy) sprawia, że ​​jest to ostrzeżenie zamiast zwykłego wyjątku.

Więc muszę wiedzieć, jak złapać to ostrzeżenie, jakby to był wyjątek. Odpowiedzi na te pytania, które znalazłem na tej stronie, zostały udzielone nie w sposób, w jaki potrzebowałem. Oto mój kod:

import numpy as np
import matplotlib.pyplot as plt
import warnings

class Lagrange:
    def __init__(self, xPts, yPts):
        self.xPts = np.array(xPts)
        self.yPts = np.array(yPts)
        self.degree = len(xPts)-1 
        self.weights = np.array([np.product([x_j - x_i for x_j in xPts if x_j != x_i]) for x_i in xPts])

    def __call__(self, x):
        warnings.filterwarnings("error")
        try:
            bigNumerator = np.product(x - self.xPts)
            numerators = np.array([bigNumerator/(x - x_j) for x_j in self.xPts])
            return sum(numerators/self.weights*self.yPts) 
        except Exception, e: # Catch division by 0. Only possible in 'numerators' array
            return yPts[np.where(xPts == x)[0][0]]

L = Lagrange([-1,0,1],[1,0,1]) # Creates quadratic poly L(x) = x^2

L(1) # This should catch an error, then return 1. 

Po wykonaniu tego kodu otrzymuję dane wyjściowe:

Warning: divide by zero encountered in int_scalars

To jest ostrzeżenie, które chcę złapać. Powinien pojawić się wewnątrz rozumienia listy.

questionAnswers(4)

yourAnswerToTheQuestion