在程序python脚本中引发自定义错误

时间:2017-01-23 22:05:06

标签: python pandas exception

我正在使用pandas汇总一个简短的数据分析脚本,并将结果写入带有图表的Excel工作表。

目前,我正在使用sys.exit让用户了解与输入数据相关的问题。

以下是一个例子:

if len(titles) != len(plot_key):
    raise sys.exit('Error: Number of chart titles does not equal the number of plots to be generated')

在一个案例中,我想与用户分享存储在变量中的更多信息

if df[df.Well > 3].empty is False:
    sys.exit('Error: Data contains more than 3 wells.')

如果条件为True并且df[df.Well > 3]中有值,我想与用户分享df[df.Well > 3]的索引,以便他们知道问题存在的位置,而不是离开要由他们弄明白。

现在我正在这样做,但这似乎是一个黑客。

if df[df.Well > 3].empty is False:
    print df[df.Well > 3].index.get_values()
    sys.exit('Error: Data contains more than 3 wells.')

对最佳做法的任何建议都会非常感激。

1 个答案:

答案 0 :(得分:0)

提出自定义错误的pythonic方法是定义自己的异常。这可能类似于:

class MyCustomException(Exception):
    pass

class ChartTitles(MyCustomException):
    pass

class TooManyWells(MyCustomException):
    pass

if len(titles) != len(plot_key):
    raise ChartTitles(
        'Number of chart titles does not equal the number of plots to be generated')      

if not df[df.Well > 3].empty:
    raise TooManyWells(
        "Data contains more than 3 wells '%s'" % df[df.Well > 3].index.get_values())

将所有自定义异常基于一个基本自定义异常,可以更轻松地捕获所有异常。