scipy错误,但未引发异常

3 投票
1 回答
1111 浏览
提问于 2025-04-17 17:10

我遇到了一个常见的scipy.interpolate错误:

>>> sx = interpolate.UnivariateSpline(T,X)
  File "...scipy/interpolate/fitpack2.py", line 143, in __init__
    xb=bbox[0],xe=bbox[1],s=s)
dfitpack.error: (m>k) failed for hidden m: fpcurf0:m=3

这个错误有没有什么Python异常可以关联?(我只是想捕捉这个异常并忽略它)

如果没有,我该怎么做才能继续运行我的程序呢?谢谢

几个小时后我回来了,给出一个解决方案:

这段代码可以捕捉异常并抛出我自己的异常:

try : 
   sx = interpolate.UnivariateSpline(X,Y)
except : 
   raise PyGlideSplineError("%s : impossible de calculer la spline"%whoami())

它有效!!

谢谢

1 个回答

5

scipy.interpolate.dfitpack 是一个扩展功能,但它似乎没有直接把错误类型暴露给 Python。不过,你可以故意制造一个错误,这样就能把这个隐藏的错误类型找出来,然后捕捉到它,并把它的类型存储到一个变量里:

from scipy.interpolate import dfitpack

try:
    dfitpack.sproot(-1, -1, -1)
except Exception, e:
    dfitpack_error = type(e)

try:
    dfitpack.sproot(-1, -1, -1)
except dfitpack_error:
    print "Got it!"

撰写回答