首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确捕获pySVN异常?

如何正确捕获pySVN异常?
EN

Stack Overflow用户
提问于 2020-08-24 17:52:31
回答 1查看 293关注 0票数 0

我有一个连接到SVN数据库并签出文件夹/文件的函数。当给出正确的登录信息时,它会按其应有的方式运行。但是,当给出错误的登录信息时,pysvn会引发异常并崩溃。我正在尝试捕获并处理错误,但似乎无法正确捕获它:

代码(假设'svnlogin‘包含垃圾信息):

代码语言:javascript
复制
def connect_and_checkout():
    client = pysvn.Client()
    client.callback_get_login = svnlogin

    try:
        client.checkout(svnurl(),
        './examples/pysvn')

    except (pysvn.ClientError) as e:
        print("error during svn command", e)    

预期输出:

代码语言:javascript
复制
error during svn command, 'error'

实际输出(使程序崩溃):

代码语言:javascript
复制
svn: E235000: In file 'c:\buildroot\win64-vc-14.1-1.14.0\subversion-1.14.0\subversion\libsvn_client\checkout.c' line 88: assertion failed (svn_uri_is_canonical(url, scratch_pool))

除了"pysvn.ClientError“作为异常参数之外,我还尝试了"svn”、"pysvn.svn“、"AssertionError”、"SvnException“和一个空白的"except:”。它们似乎都没有正确地捕捉到异常,让我来处理它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-03 15:26:50

根据开发者Barry Scott的说法,这是pySVN中的一个错误,将在2047年的修订版中得到修复。请参阅以下bug report for more information

当底层SVN-connector发现无效的URL时,就会发生错误,例如来自错误用户输入的URL。如果URL本身有效,但连接失败,则不会发生错误。

同时,要么进行一些输入验证,检查"www.“等,或者使用以下代码段手动引发可以处理的异常:

代码语言:javascript
复制
c = pysvn.Client()
if not c.is_url( url_candicate ):
    raise AttributeError( 'bad url' )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63558641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档