标签: try-except

如何正确忽略异常

如果您只是想尝试 - 除非不处理异常,您如何在Python中执行此操作?

以下是正确的方法吗?

try:
    shutil.rmtree(path)
except:
    pass
Run Code Online (Sandbox Code Playgroud)

python exception try-except

734
推荐指数
10
解决办法
98万
查看次数

异常后如何重试?

我有一个循环开始for i in range(0, 100).通常它运行正常,但有时它会因网络状况而失败.目前我设置它以便在失败时,它将continue在except子句中(继续到下一个数字i).

我是否可以重新分配相同的数字i并再次运行循环的失败迭代?

python loops exception try-except

220
推荐指数
14
解决办法
22万
查看次数

使用Return语句的奇怪的Try-Except-Else-Finally行为

这是一些表现特殊的代码.这是我编写的行为的简化版本.这仍然会表现出奇怪的行为,并且我对于为什么会这样做有一些具体的问题.

我在Windows 7上使用Python 2.6.6.

def demo1():
    try:
        raise RuntimeError,"To Force Issue"
    except:
        return 1
    else:
        return 2
    finally:
        return 3

def demo2():
    try:
        try:
            raise RuntimeError,"To Force Issue"
        except:
            return 1
        else:
            return 2
        finally:
            return 3
    except:
        print 4
    else:
        print 5
    finally:
        print 6
Run Code Online (Sandbox Code Playgroud)

结果:

>>> print demo1()
3
>>> print demo2()
6
3
Run Code Online (Sandbox Code Playgroud)
  • 为什么demo 1返回3而不是1?
  • 为什么演示两次打印6而不是打印6 w/4或5?

python try-except

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

Python尝试finally块返回

下面有一些有趣的代码:

def func1():
    try:
        return 1
    finally:
        return 2

def func2():
    try:
        raise ValueError()
    except:
        return 1
    finally:
        return 3

func1()
func2()
Run Code Online (Sandbox Code Playgroud)

可以请有人解释,结果将返回这两个函数并解释原因,即描述执行的顺序

python try-catch try-finally try-except

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

python 3尝试 - 除了所有错误

是否有可能尝试 - 除了捕获所有仍然显示错误而不捕获每个可能的异常?我有一个案例,在每天24小时运行的脚本中,每隔几天就会发生一次异常.我不能让脚本死掉,但它们也没关系,因为只要我尝试除了一切,它都会重试.因此,当我追踪任何最后罕见的异常时,我想将它们记录到文件中以供将来调试.

例:

try:
    print(555)
except:
    print("type error: "+ str(the_error))
Run Code Online (Sandbox Code Playgroud)

the_error有没有什么方法可以替换堆栈跟踪或类似的东西?

python python-3.x try-except

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

如何在try/except块public中创建一个变量?

如何在try/except块public中创建变量?

import urllib.request

try:
    url = "http://www.google.com"
    page = urllib.request.urlopen(url)
    text = page.read().decode('utf8')
except (ValueError, RuntimeError, TypeError, NameError):
    print("Unable to process your request dude!!")

print(text)
Run Code Online (Sandbox Code Playgroud)

此代码返回错误__CODE__.

如何在try/except块之外使变量文本可用?

python scope local-variables python-3.x try-except

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

如何正确编写Try..Finally..Except语句?

以下代码作为示例:

procedure TForm1.Button1Click(Sender: TObject);
var
  Obj: TSomeObject;
begin
  Screen.Cursor:= crHourGlass;

  Obj:= TSomeObject.Create;
  try
    // do something
  finally
    Obj.Free;
  end;

  Screen.Cursor:= crDefault;
end;
Run Code Online (Sandbox Code Playgroud)

如果在该// do something部分中发生错误,我创建的TSomeObject将不会被释放,并且Screen.Cursor仍然会被卡在一个小时玻璃中,因为代码在进入这些行之前已经被破坏了?

现在除非我误会,否则应该有一个异常声明来处理任何错误的发生,例如:

procedure TForm1.Button1Click(Sender: TObject);
var
  Obj: TSomeObject;
begin
  try
    Screen.Cursor:= crHourGlass;

    Obj:= TSomeObject.Create;
    try
      // do something
    finally
      Obj.Free;
    end;

    Screen.Cursor:= crDefault;
  except on E: Exception do
  begin
    Obj.Free;
    Screen.Cursor:= crDefault;
    ShowMessage('There was an error: ' + E.Message);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

现在除非我做了一些非常愚蠢的事情,否则应该没有理由在Finally块和之后以及在Exception块中两次使用相同的代码.

基本上我有时会有一些程序可能类似于我发布的第一个样本,如果我收到错误,光标会被卡在小时玻璃上.添加Exception处理程序会有所帮助,但它似乎是一种肮脏的方式 - 它基本上忽略了Finally块,更不用说从Finally到Exception部分的复制粘贴的丑陋代码.

如果这似乎是一个直截了当的问题/答案,我仍然非常学习德尔福.

如何正确编写代码来处理语句并正确释放对象和捕获错误等?

delphi try-finally try-except

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

Try-except子句,除了代码以外是空的

有时您不希望在部件中放置任何代码,except因为您只是希望确保代码运行时没有任何错误但是没有兴趣捕获它们.我可以在C#中这样做:

try
{
 do_something()
}catch (...) {}
Run Code Online (Sandbox Code Playgroud)

我怎么能在Python中做到这一点?,因为缩进不允许这样做:

try:
    do_something()
except:
    i_must_enter_somecode_here()
Run Code Online (Sandbox Code Playgroud)

顺便说一句,也许我在C#中所做的事情也不符合错误处理原则.如果你对此有所了解,我会很感激.

python try-except

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

使用Python请求模块时尝试/除外

做一些API测试并尝试创建一个给定输入URL的函数它将返回json响应,但是如果HTTP错误是响应,则将返回错误消息.

我之前使用的是urllib2,但现在尝试使用请求.但是看起来我的except块永远不会被执行,无论错误如何.

testURL = 'http://httpbin.org/status/404'


def return_json(URL):
    try:
        response = requests.get(URL)
        json_obj = response.json()
        return json_obj
    except requests.exceptions.HTTPError as e:
        return "Error: " + str(e)
Run Code Online (Sandbox Code Playgroud)

我从运行上面得到的结果......

<Response [404]>
Run Code Online (Sandbox Code Playgroud)

python try-except python-requests

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

几个`与`s在`尝试`s

我有几个可能保存我的数据的文件; 它们可以以不同的方式压缩,因此要打开它们我需要使用file(),gzip.GzipFile()而其他也返回文件对象(支持with接口).

我想尝试每一个,直到一个成功开放,所以我可以做类似的事情

try:
  with gzip.GzipFile(fn + '.gz') as f:
    result = process(f)
except (IOError, MaybeSomeGzipExceptions):
  try:
    with xCompressLib.xCompressFile(fn + '.x') as f:
      result = process(f)
  except (IOError, MaybeSomeXCompressExceptions):
    try:
      with file(fn) as f:
        result = process(f)
    except IOError:
      result = "some default value"
Run Code Online (Sandbox Code Playgroud)

如果我有几十个可能的压缩变体,这显然是不可行的.(嵌套将越来越深,代码看起来总是非常相似.)

有没有更好的拼写方法?

编辑:如果可能的话,我希望process(f)除了try/except以外,以避免意外捕获在中提出的异常process(f).

python nested exception try-except

17
推荐指数
3
解决办法
299
查看次数