3

我正在使用 SVNKit,我发现测试服务器身份验证的唯一方法是使用testConnection()class的方法SVNRepository

该方法不返回布尔值,但会引发异常。

public abstract void testConnection()
                         throws SVNException

问题是,我得到一个coldfusion错误,而不是被抓住: 尝试捕获中的coldfusion错误(SVNRepository.testConnection())

这是我的代码:

        clientManager = CreateObject("java", "org.tmatesoft.svn.core.wc.SVNClientManager").newInstance();

        authManagerJO = CreateObject("java", "org.tmatesoft.svn.core.wc.SVNWCUtil").
                createDefaultAuthenticationManager(ARGUMENTS.username, JavaCast("String", ARGUMENTS.password));
        authManagerJO.setAuthenticationForced(true);
        clientManager.setAuthenticationManager(authManagerJO); 
        svnDavRepoFactory = CreateObject("java", "org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory").setup();
        repositoryUrlJO = CreateObject("java", "org.tmatesoft.svn.core.SVNURL").parseURIDecoded(APPLICATION.svn_repository_audifiles);
        svnRepository = clientManager.createRepository(repositoryUrlJO, true);
        try{
            svnRepository.testConnection();
        }
        catch (Exception e){
            svnRepository = "";
        }
4

3 回答 3

7

好吧,它完全有可能抛出一个不是Exception- 另一种Throwable. 你可以catch Throwable,虽然那会很苛刻......捕捉一次,记录确切的异常类型,然后捕捉是合理的......

于 2012-03-30T19:43:23.550 回答
2

你尝试捕捉Any而不是Exception

这样,即使异常不是Jon 提议的那样,您也一定会捕获所有内容。Exception

于 2012-03-30T20:24:17.537 回答
0

catch (any e) {
    write dump(e);
    abort;
}

然后你会看到实际的错误。

于 2012-03-30T20:28:18.643 回答