标签: try-except

忽略Python中的异常

我在python中有try-except块,我想在发生异常时什么都不做.我的代码如下:

for i in range(len(grid)):
    for j in range(len(grid[i])):
        try:
            count = count > int(grid[i][j]) ? count : int(grid[i][j])
        except:
            //Do nothing here
Run Code Online (Sandbox Code Playgroud)

如果发现异常,我该怎么办?

谢谢.

python try-except

3
推荐指数
3
解决办法
1万
查看次数

用于异常处理的首选Python样式

这是一个一般的,最佳实践问题.以下哪个try-except示例更好(函数本身是requests.get()的简单包装器):

def get(self, url, params=params):
    try:
        response = {}
        response = requests.get(url, params=params)
    except requests.ConnectionError,e:
        log.exception(e)
    finally:
        return response
Run Code Online (Sandbox Code Playgroud)

要么

def get(self, url, params=params):
    try:
        return requests.get(url, params=params)
    except requests.ConnectionError,e:
        log.exception(e)
        return {}
Run Code Online (Sandbox Code Playgroud)

或许两者都不是最理想的?我似乎经常为错误记录编写这些包装函数,并且想知道最恐怖的方式.对此有任何建议将不胜感激.

python syntax try-except

3
推荐指数
1
解决办法
220
查看次数

通过使用try-except块,编写一小段代码来汇总字符串中的数字

背景:我的入门教材中的一个"手指练习"让我尝试编写这样的程序来教我如何使用try-except块.该教科书的设计是为了配合麻省理工学院MOOC的edX上的"6.00x"课程.这不是在线课程本身的一部分,而只是让我理解try-excpet块的一些练习.

到目前为止,这是我的代码:

def sumDigits(s):
'''Assumes s is a string
   Returns the sum of the decimal digits in s
       For example, if is is 'a2b3c' it returns 5'''
    try:
        digitsum = 0
        for i in s:
            digitsum += int(i)


    except TypeError:
        return 'You have hit a TypeError'

    except ValueError:
        return 'You have hit a ValueError'

    return digitsum
Run Code Online (Sandbox Code Playgroud)

所以,我遇到的问题是知道将什么内容放入except子句中.我放入两个除了子句的文本是因为我只是希望我的程序运行.我假设解释器经历了一个像'456ab'的字符串,命中'a',然后打印出我告诉它返回的文本,当它不可避免地遇到ValueError时.如何让它"忽略"字符串中的字母字符,只是使用字符串中的数字,所有这些都在try-except块的上下文中?

python string try-except

3
推荐指数
1
解决办法
846
查看次数

尝试除浮点数外但不是整数

所以,我在编程练习中遇到了障碍.我理解try的概念,但是我怎么能使用try除了handler只接受一个浮点数或十进制数,如果输入一个整数或整数,它会抛出一条错误信息.我在理论上知道它不可能但是有办法吗?

理想情况下,我想使用try代码块,因为这是我当前的课程.

感谢所有提前!

python try-except

3
推荐指数
1
解决办法
2891
查看次数

退出函数在try-except块中不起作用

这是退出功能,我想在try除了块之外运行它..

def quit_function(quit):
     if(quit=="quit"):
        sys.exit(1)
Run Code Online (Sandbox Code Playgroud)

当我输入正确的输入它工作function_one但是当我写"退出"以退出程序quit_function不起作用时,除了部分工作所以输出是"无效输入"..我该如何解决?

 while True:
    try:
        a=raw_input("Enter input :").lower()
        function_one(a)
        quit_function(a)
    except:
        print "invalid input"
    else:
        break
Run Code Online (Sandbox Code Playgroud)

python function try-except

3
推荐指数
1
解决办法
1019
查看次数

Python try-except块的DRY方法?

目标:我有几行代码,每行都能产生相同类型的错误,并保证同样的响应.如何使用try-except块防止"不要重复"问题.

背景:

我使用ReGex从文本文件中抓取格式不佳的数据,并将其输入到自定义对象的字段中.代码工作得很好,除非字段留空,在这种情况下它会抛出错误.

我在try-except块中处理此错误.如果出错,请在对象的字段中插入一个空白(即'').

问题是它变得易于阅读,很好,Python代码变成了一堆乱七八糟的块,每个块都做同样的事情.这是一个'不要重复自己'(又名DRY)违规行为.

代码:

之前:

sample.thickness = find_field('Thickness', sample_datum)[0]
sample.max_tension = find_field('Maximum Load', sample_datum)[0]
sample.max_length = find_field('Maximum Extension', sample_datum)[0]
sample.test_type = sample_test
Run Code Online (Sandbox Code Playgroud)

后:

try:
    sample.thickness = find_field('Thickness', sample_datum)[0]
except:
    sample.thickness = ''

try:
    sample.max_tension = find_field('Maximum Load', sample_datum)[0]
except:
    sample.max_tension = ''

try:
    sample.max_length = find_field('Maximum Extension', sample_datum)[0]
except: 
    sample.max_length = ''

try:    
    sample.test_type = sample_test
except:
    sample.test_type = ''
Run Code Online (Sandbox Code Playgroud)

我需要的:

是否有一些Pythonic方式来写这个?如果在任何这些行上存在索引超出范围的错误(表示该字段为空,并且ReGex未能返回任何内容),我可以说一些块,在示例字段中插入一个空白.

python python-2.7 try-except

3
推荐指数
2
解决办法
354
查看次数

为什么模拟“open”并返回 FileNotFoundError 会引发 AttributeError: __exit__?

open通过加薪进行FileNotFoundError模拟测试AttributeError: __exit__。为什么会发生这种情况以及我可以采取什么措施来解决它?

以下代码打开一个简单的文本文件。如果文件丢失,它会生成一个默认值。它已经通过定期运行进行了检查,并且看起来运行良好。

so_main.py

import os

import so_config


def load_savelocation():
    path = os.path.join(so_config.ROOT, so_config.SAVELOCATION_FN)
    savelocation_path = os.path.normpath(path)
    try:
        with open(savelocation_path) as f:
            so_config.SAVELOCATION_PATH = f.readline()
    except FileNotFoundError:
        so_config.SAVELOCATION_PATH = so_config.ROOT
Run Code Online (Sandbox Code Playgroud)

so_config.py

import os

ROOT, _ = os.path.split(__file__)
SAVELOCATION_PATH = None
SAVELOCATION_FN = 'savelocation.ini'
Run Code Online (Sandbox Code Playgroud)

单元测试则是另一回事。我嘲笑了open中的命令so.maintest_so_main.py有两项测试:一项用于正常打开存在的文件,第二项用于测试处理FileNotFoundError

常规文件打开的第一次测试test_read_path_from_disk_file_into_config_py工作正常。

FileNotFoundError第二个测试失败,因为AttributeError: __exit__. 我可以设置self.mock_open.return_valueFileNotFoundError或我可以将其设置为'garbage'。这没有什么区别。

测试so_main.py

import unittest
import unittest.mock as mock

import …
Run Code Online (Sandbox Code Playgroud)

mocking python-3.x try-except python-unittest

3
推荐指数
1
解决办法
2456
查看次数

处理消歧错误?

我正在使用该wikipedia库,并且想将其DisambiguationError作为异常处理。我的第一次尝试是

try:
     wikipedia.page('equipment') # could be any ambiguous term
except DisambiguationError:
     pass
Run Code Online (Sandbox Code Playgroud)

在执行期间,未到达第 3 行。一个更普遍的问题是:如何找到这样的特定于库的类的错误类型?

python error-handling try-except pywikibot

3
推荐指数
1
解决办法
1571
查看次数

多个调用级别的异常处理

如何最好地处理调用层次结构中引发异常的多个级别的方法,以便如果是致命错误,程序将退出(显示错误对话框后)?

我基本上来自 Java。在那里我简单地将任何方法声明为throws Exception,重新抛出它并在顶层的某个地方捕获它。

然而,Python 不同。我的 Python 代码基本上如下所示。

编辑:添加了更简单的代码......

主入口函数( plugin.py):

def main(catalog):

    print "Executing main(catalog)... "
    # instantiate generator
    gen = JpaAnnotatedClassGenerator(options)

    # run generator
    try:
        gen.generate_bar()  # doesn't bubble up
    except ValueError as error:
        Utilities.show_error("Error", error.message, "OK", "", "")
        return

    ... usually do the real work here if no error
Run Code Online (Sandbox Code Playgroud)

JpaAnnotatedClassGenerator班级 (engine.py):

class JpaAnnotatedClassGenerator:

    def generate_bar(self):
        self.generate_value_error()

    def generate_value_error(self):
        raise ValueError("generate_value_error() raised an error!")
Run Code Online (Sandbox Code Playgroud)

我想返回给调用者一个异常,该异常将被抛出回该调用,直到它到达最外层try-except以显示带有异常消息的错误对话框。

问题:如何在 Python 中最好地完成此操作?我真的必须 …

python exception try-except

3
推荐指数
1
解决办法
1万
查看次数

在这种情况下我应该如何插入 try- except

任务1

编写一个脚本,从 STDIN 读取字符串,如果字符串超过 10 个字符,则引发 ValueError 异常,否则打印读取的字符串。

我这样写代码

a = input("Enter a string")
if(len(a) > 10):
    raise ValueError
else:
    print(a)
Run Code Online (Sandbox Code Playgroud)

任务2

使用try ... except子句。打印 except 块内的错误消息。

我现在对如何使用try-except这里感到困惑,因为要打印except块中的任何消息,程序必须在try块中失败。

我的输入将是PythonIsAmazing

python string python-3.x try-except valueerror

3
推荐指数
1
解决办法
1111
查看次数