小编Dan*_*nov的帖子

Java:如何避免派生接口中的弃用警告覆盖不推荐使用的成员?

请考虑以下简化的接口继承层次结构:

// Starting point:
public interface Base {
    void Foo();
}

public interface Derived extends Base {
}
Run Code Online (Sandbox Code Playgroud)

它旨在将Foo方法从Base接口移动到Derived接口:

// Desired end-point:
public interface Base {
}

public interface Derived extends Base {
    void Foo();
}
Run Code Online (Sandbox Code Playgroud)

为了逐步实现这种突破性改变,希望在Base一段时间内保持接口的向后兼容性.

这可以通过将Base接口上的方法标记为@Deprecated:

// Intermediate state:
public interface Base {
    /**
     * @deprecated This method is deprecated as of release X. Derived.Foo should be used instead.
     */
    @Deprecated void Foo();
}

public interface …
Run Code Online (Sandbox Code Playgroud)

java overriding interface deprecated

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

如何确定.NET程序集是否包含非托管代码?

包含托管代码和非托管代码混合的.NET程序集不能与其他程序集进行ILMerged.

如何验证给定的.NET程序集是包含纯托管代码,还是托管代码和非托管代码的混合?

.net assemblies native unmanaged

11
推荐指数
2
解决办法
4762
查看次数

在C#中使用一个catch-all catch块的finally块是什么用的?

考虑以下C#代码结构(S0-S3是任意代码块的占位符):

try
{
    S0;
}
catch (Exception ex)
{
    S1;
}
finally
{
    S2;
}

S3;
Run Code Online (Sandbox Code Playgroud)

在S1在catch处理程序内抛出异常的情况下,finally仍然会执行S2 (但S3不会).

假设S1不能抛出,在finally块内有S2是否有任何意义,而不是在S3之前将它放在try/catch/finally之外?

try
{
    // Do something that might throw
}
catch (Exception ex)
{
    // Save the exception to re-throw later
    // NB: This statement cannot throw an exception!
    this.cachedException = ex;
}
finally
{
    S2;
}

S3;
Run Code Online (Sandbox Code Playgroud)

有这个finally块有什么意义吗?下面的代码是不是等价的(严格假设catch块中的内容不能抛出):

try
{
    // Do something that might throw
}
catch …
Run Code Online (Sandbox Code Playgroud)

.net c# exception-handling

11
推荐指数
2
解决办法
1222
查看次数

如果无法加载预期的注册表设置,最合适的.NET异常是什么?

我有一个应用程序试图在其构造函数中加载一些预期的注册表设置.

如果无法加载这些(基本的,不可违约的)注册表设置,那么从BCL抛出最合适的.NET异常是什么?

例如:

 RegistryKey registryKey = Registry.LocalMachine.OpenSubkey("HKLM\Foo\Bar\Baz");

 // registryKey might be null!
 if (registryKey == null)
 {
     // What exception to throw?
     throw new ???Exception("Could not load settings from HKLM\foo\bar\baz.");
 }
Run Code Online (Sandbox Code Playgroud)

.net c#

9
推荐指数
3
解决办法
2858
查看次数

为什么安装Visual Studio 2008后,调试器下的catch(TException)处理块行为会有所不同?

考虑下面的控制台应用程序,其特色是具有捕获类型异常的通用catch处理程序的方法TException.

当使用"调试"配置构建此控制台应用程序并在Visual Studio调试器下执行时(即通过*.vshost.exe),这在Visual Studio 2005和Visual Studio 2008中都会失败.

我相信这个问题只是在我安装Visual Stuido 2008之后才出现的.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine(Environment.Version);
        CatchAnException<TestException>();

        Console.ReadKey();
    }

    private static void CatchAnException<TException>()
        where TException : Exception
    {
        Console.WriteLine("Trying to catch a <{0}>...", typeof(TException).Name);
        try
        {
            throw new TestException();
        }
        catch (TException ex)
        {
            Console.WriteLine("*** PASS! ***");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Caught <{0}> in 'catch (Exception ex)' handler.", ex.GetType().Name);
            Console.WriteLine("*** FAIL! ***");
        }
        Console.WriteLine();
    }
}

internal class TestException : Exception
{
} …
Run Code Online (Sandbox Code Playgroud)

.net c# visual-studio-2008 visual-studio

9
推荐指数
1
解决办法
963
查看次数

XmlDocument上的SelectNodes是否可以返回null?

是否可以SelectNodes()调用a XmlDocument返回null?

我的困境是我试图达到100%的单元测试代码覆盖率; ReSharper告诉我,我需要防止该SelectNodes()方法的null返回,但我看不出XmlDocument可以返回null(因此,无法测试我的guard子句并达到100%的单元测试覆盖率!)

.net xml resharper unit-testing

8
推荐指数
2
解决办法
3609
查看次数

在尚未构建csproj时抑制AfterBuild目标

我在MSBuild中有一个后期构建目标来复制一些构建输出.

这是作为对AfterBuild目标的依赖关系(公开Microsoft.CSharp.targets):

<Target Name="AfterBuild" DependsOnTargets="InstallUtil;CopyPostBuildFiles" />
Run Code Online (Sandbox Code Playgroud)

如果构建实际上没有重新构建,有没有办法避免文件被复制?

例如,当MSBuild依赖关系分析声明项目不需要构建因为它的源文件都没有更新时,它不会构建,但仍然执行我的复制目标.有什么方法可以防止这种情况吗?

c# msbuild

8
推荐指数
3
解决办法
4343
查看次数

尊重msbuild调用的批处理文件中的退出代码

我有一个批处理文件,使用该exit命令返回退出代码.

在某些情况下,可以从命令行交互地调用此批处理文件,或者在其他情况下,可以使用该Exec任务作为MSBuild项目的一部分运行该批处理文件.

  • 如果我exit %errorlevel%在我的批处理文件中使用这很好,并且MSBuild看到错误代码,但是在这种情况下,从命令窗口运行批处理文件的交互式用户将获得cmd.exe的粗略退出.
  • 如果我使用exit /b %errorlevel%交互式场景没有得到粗鲁的退出,但这也意味着cmd我的Exec任务启动也没有退出,因此MSBuild没有看到返回值.

作为这两个问题的解决方案,我试图使用exit /b但是从我的构建脚本中启动批处理文件,如下所示:

<Exec Command="Batch.cmd params &amp; exit %errorlevel%" />
Run Code Online (Sandbox Code Playgroud)

这个想法是我明确地从'非终端'返回exit /b并手动调用exitcmd.exeExecBuild Task可以看到它之外传播这个值.

这似乎是完美的解决方案,但它不起作用.Exec仍然没有得到正确的错误值.

msbuild batch-file msbuild-task

8
推荐指数
1
解决办法
8744
查看次数

我可以在python脚本中找到运行python脚本的可执行文件的路径吗?

有没有办法检索运行当前python脚本的可执行文件的路径(从python脚本中)?

python introspection

8
推荐指数
1
解决办法
360
查看次数

pycharm pytestrunner PluginManager意外的关键字参数

我有一个非常简单的测试脚本,只是为了学习pytest,tmp.py:

def square(x):
    return x*x
def test_square():
    assert square(4) == 16
Run Code Online (Sandbox Code Playgroud)

使用Pycharm来运行这个脚本,我已经配置了我的项目设置,使得pytest被用作我的默认测试运行器.当我运行上面的代码时,我收到以下错误:

/Users/mingxiao/webdav_2.7.5/bin/python /Applications/PyCharm.app/helpers/pycharm/pytestrunner.py -p pytest_teamcity /Users/mingxiao/dev/juggernaut/src/integrations/webDAV/demo/tmp.py "-k test_square"
Testing started at 4:41 PM ...
Traceback (most recent call last):
  File "/Applications/PyCharm.app/helpers/pycharm/pytestrunner.py", line 51, in <module>
    main()
  File "/Applications/PyCharm.app/helpers/pycharm/pytestrunner.py", line 20, in main
    _pluginmanager = PluginManager(load=True)
TypeError: __init__() got an unexpected keyword argument 'load'

Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

我正在运行PyCharm 3.0专业版,pytest 2.4.2和python 2.7.5.似乎它的PyCharm本身就是造成这个问题的原因.

python pytest pycharm

8
推荐指数
1
解决办法
1499
查看次数