小编Sil*_*ost的帖子

27
推荐指数
5
解决办法
5549
查看次数

在Python中处理异常的正确方法?

我搜索了其他帖子,因为我觉得这是一个相当常见的问题,但我发现的所有其他Python异常问题都没有反映我的问题.

我会尽量在这里具体说明,所以我将举一个直接的例子.并且pleeeeease不会针对此特定问题发布任何变通方法.我对你如何使用xyz发送更好的电子邮件并不感兴趣.我想知道你一般如何处理依赖的,容易出错的语句.

我的问题是,如何很好地处理异常,相互依赖的异常,意思是:只有第一步成功,尝试下一步,依此类推.还有一个标准是:必须捕获所有异常,此代码必须是健壮的.

供您考虑的一个例子:

try:
    server = smtplib.SMTP(host) #can throw an exception
except smtplib.socket.gaierror:
    #actually it can throw a lot more, this is just an example
    pass
else: #only if no exception was thrown we may continue
    try:
        server.login(username, password)
    except SMTPAuthenticationError:
        pass # do some stuff here
    finally:
        #we can only run this when the first try...except was successful
        #else this throws an exception itself!
        server.quit() 
    else:
        try:
            # this is already the 3rd nested try...except
            # for such …
Run Code Online (Sandbox Code Playgroud)

python exception

27
推荐指数
2
解决办法
2万
查看次数

回来吃异常

我发现以下行为至少很奇怪:

def errors():
    try:
        ErrorErrorError
    finally:
        return 10

print errors()
# prints: 10
# It should raise: NameError: name 'ErrorErrorError' is not defined
Run Code Online (Sandbox Code Playgroud)

returnfinally子句中使用时,异常消失.那是一个错误吗?有记录吗?

但真正的问题(以及我将标记为正确的答案)是:
python开发人员允许这种奇怪行为的理由是什么?

python return exception finally

26
推荐指数
3
解决办法
3025
查看次数

在C中打印字符及其ASCII码

如何在C中打印char及其等效的ASCII值?

c printf

26
推荐指数
2
解决办法
30万
查看次数

设置模块已弃用警告

当我运行我的python脚本时,我收到以下警告

DeprecationWarning: the sets module is deprecated
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

python

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

使用Python获取CPU温度?

如何使用Python检索CPU的温度?(假设我在Linux上)

python cpu temperature

26
推荐指数
5
解决办法
4万
查看次数

PHP:尝试用"\n"创建一个新行

我写的是这样的:

echo "foo";
echo "\n";
echo "bar";
Run Code Online (Sandbox Code Playgroud)

并且"bar"未写在下面的行中.

我究竟做错了什么?

哈维

php newline

26
推荐指数
4
解决办法
15万
查看次数

如何在Python中中止对象实例创建?

我想设置一个类,它将在实例创建期间根据传递给类的参数的值中止.我尝试过一些东西,其中一个是在__new__方法中引发错误:

class a():
    def __new__(cls, x):
        if x == True:
            return cls
        else:
            raise ValueError
Run Code Online (Sandbox Code Playgroud)

这就是我希望会发生的事情:

>>obj1 = a(True)
>>obj2 = a(False)
ValueError Traceback (most recent call last)
Run Code Online (Sandbox Code Playgroud)

obj1存在但obj2不存在.

有任何想法吗?

python object

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

用单行替换所有正则表达式匹配

我有动态正则表达式,其中我事先不知道它有多少组我想用xml标签替换所有匹配

re.sub("(this).*(string)","this is my string",'<markup>\anygroup</markup>')
>> "<markup>this</markup> is my <markup>string</markup>"
Run Code Online (Sandbox Code Playgroud)

是单线还是可能吗?

python regex

26
推荐指数
2
解决办法
5万
查看次数

获取装饰功能的名称?

这是我的装饰者:

def check_domain(func):

    def wrapper(domain_id, *args, **kwargs):
        domain = get_object_or_None(Domain, id=domain_id)
        if not domain:
            return None
        return func(domain_id, *args, **kwargs)

    return wrapper
Run Code Online (Sandbox Code Playgroud)

这是一个包裹的功能:

@check_domain
def collect_data(domain_id, from_date, to_date):
    do_stuff(...)
Run Code Online (Sandbox Code Playgroud)

如果我这样做,collect_data.__name__我会得到wrapper而不是collect_data

有任何想法吗?

python django decorator

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

标签 统计

python ×8

exception ×2

c ×1

cpu ×1

decorator ×1

django ×1

finally ×1

newline ×1

object ×1

php ×1

printf ×1

regex ×1

return ×1

temperature ×1