如何在Python中抛出异常?

如何在Python中抛出异常?,python,exception,error-handling,Python,Exception,Error Handling,我正在尝试使用Python的“langdetect”库检测数据帧中的外语 for e in food['product_name'].dropna(): if detect(e) == 'zh': print e 在这里,我试着把在特定栏目中找到的每个中文单词都打印出来 但是,在某个时刻,我收到了以下错误消息: LangDetectException: No features in text. 我知道当发现一个数字、一个空格或一个不是单词的字符串(参考代码、邮件地址…

我正在尝试使用Python的“langdetect”库检测数据帧中的外语

for e in food['product_name'].dropna():
    if detect(e) == 'zh':
        print e
在这里,我试着把在特定栏目中找到的每个中文单词都打印出来

但是,在某个时刻,我收到了以下错误消息:

LangDetectException: No features in text.
我知道当发现一个数字、一个空格或一个不是单词的字符串(参考代码、邮件地址…)时,就会发生这种情况

我只想抛出一个异常并相应地处理这种情况,但我不知道怎么做。以下是我的尝试:

for e in food['product_name'].dropna():
    if detect(e) == 'zh':
        try:
            print e
        except LangDetectException:
            pass

有人能帮我修复这个写得不好的片段吗?很明显,它有问题,但我不知道到底是什么

如上面注释中所述,异常是由detect引发的,因此您需要在
try
块中包装该调用:

for e in food['product_name'].dropna():
    try:
        if detect(e) == 'zh':
            print e
    except LangDetectException:
        pass

如上所述,异常是由detect引发的,因此您需要在
try
块中包装该调用:

for e in food['product_name'].dropna():
    try:
        if detect(e) == 'zh':
            print e
    except LangDetectException:
        pass

异常发生在
检测
调用中,而不是
打印
中。感谢您的评论。那么我应该更改什么?
引发异常?我不清楚你在问什么。写一个保护条款:如果这是一个不想要的结果-引发一个异常看起来你在试图捕捉一个异常,而不是引发一个异常。因此,您需要将实际引发异常的代码放入
try
块中。异常发生在
detect
调用中,而不是
print
。感谢您的评论。那么我应该更改什么?
引发异常?我不清楚你在问什么。写一个保护条款:如果这是一个不想要的结果-引发一个异常看起来你在试图捕捉一个异常,而不是引发一个异常。因此,您需要将实际引发异常的代码放入
try
块中。谢谢您的回答。我终于明白为什么它不起作用了!不幸的是,我现在有一个错误显示:“名称‘LangDetectException’未定义”。我应该定义异常吗?您需要使用langdetect.lang\u detect\u exception import langdetectedException中的
导入自定义异常,而不是@wpercy和LukeSmith@solub顺便说一句,当您捕获异常时,最好实际执行一些操作,而不是使用
pass
忽略它。当然,这取决于您的实际用例。但是您可以(例如)计算有多少项引发异常,或者将这些项保存在某个位置。谢谢您的回答。我终于明白为什么它不起作用了!不幸的是,我现在有一个错误显示:“名称‘LangDetectException’未定义”。我应该定义异常吗?您需要使用langdetect.lang\u detect\u exception import langdetectedException中的
导入自定义异常,而不是@wpercy和LukeSmith@solub顺便说一句,当您捕获异常时,最好实际执行一些操作,而不是使用
pass
忽略它。当然,这取决于您的实际用例。但是您可以(例如)计算有多少项引发异常,或者将这些项保存在某个位置。