相关疑难解决方法(0)

为什么存在NotImplementedException?

这真的非常让我感到高兴,所以我希望有人可以给我一个合理的理由来解释为什么事情就像他们一样.

NotImplementedException. 你拉我的腿吧?

不,我不打算通过说,"坚持,方法实现 - 它会抛出NotImplementedException".是的,没错,你必须实现抛出NotImplementedException的方法(不像C++中的纯虚函数调用 - 现在才有意义!).虽然这很可笑,但在我看来还有一个更严重的问题.

我只是想知道,在存在NotImplementedException的情况下,任何人都可以用.Net做任何事情?您是否希望使用try catch块包装每个抽象方法调用以防止可能未实现的方法?如果你遇到这样的例外,你应该怎么做呢?

我认为没有办法测试一个方法是否在没有调用的情况下实际实现.因为调用它可能有副作用,我不能提前完成所有检查,然后运行我的算法.我必须运行我的算法,捕获NotImplementedExceptions以及一些如何将我的应用程序回滚到一些理智的状态.

这很疯狂.狂.疯.所以问题是: 为什么存在NotImplementedException

作为先发制人的罢工,我不希望任何人回应,"因为设计师需要将其放入自动生成的代码中." 这太可怕了.在您提供实现之前,我宁愿不编译自动生成的代码.例如,自动生成的实现可能是"throw NotImplementedException;" 其中未定义NotImplementedException!

有没有人捕获并处理过NotImplementedException?你有没有在你的代码中留下NotImplementedException?如果是这样,这是代表定时炸弹(即,你不小心将它留在那里),还是设计缺陷(该方法不应该实施,永远不会被调用)?

我也非常怀疑NotSupportedException ...不支持?什么?如果它不受支持,为什么它是你的界面的一部分?微软的任何人都可以拼写不正当的继承吗?但是如果我对这个问题没有太多的滥用,我可能会提出另一个问题.

附加信息:

是一个有趣的读物.

似乎与Brad Abrams有一个强烈的一致意见,"NotImplementedException是针对尚未实现的功能,但实际上应该(并且将会是).类似于在构建类时可能开始的内容,获取所有方法抛出NotImplementedException,然后用实际代码刷新它们......"

来自Jared Parsons的注释非常弱,应该可以忽略:NotImplementedException:当类型由于任何其他原因没有实现方法时抛出此异常.

MSDN上的主题更弱,只是说,"当一个请求的方法或操作未实现时引发的异常."

.net exception-handling exception notimplementedexception notsupportedexception

65
推荐指数
10
解决办法
6万
查看次数

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

Java:"尚未实现"的通用注释

Java中是否有一个通用或标准的注释用于定义尚未实现的方法?

因此,例如,如果我使用包含类似内容的库的pre-alpha版本

@NotImplementedYet
public void awesomeMethodThatTotallyDoesExactlyWhatYouNeed(){ /* TODO */ }
Run Code Online (Sandbox Code Playgroud)

我试图打电话时会收到编译时警告awesomeMethodThatTotallyDoesExactlyWhatYouNeed

java annotations

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

处理意外枚举值的首选方法是什么?

假设我们有一个接受枚举值的方法.在此方法检查该值是否有效之后,它将switch覆盖可能的值.所以问题是,在验证了值范围,处理意外值的首选方法是什么?

例如:

enum Mood { Happy, Sad }

public void PrintMood(Mood mood)
{
    if (!Enum.IsDefined(typeof(Mood), mood))
    {
        throw new ArgumentOutOfRangeException("mood");
    }

    switch (mood)
    {
        case Happy: Console.WriteLine("I am happy"); break;
        case Sad:   Console.WriteLine("I am sad"); break;
        default: // what should we do here?
    }
Run Code Online (Sandbox Code Playgroud)

处理default案件的首选方法是什么?

  • 发表评论 // can never happen
  • Debug.Fail()(或Debug.Assert(false))
  • throw new NotImplementedException() (或任何其他例外)
  • 其他一些我没有想过的方法

.net c# java language-agnostic enums

16
推荐指数
3
解决办法
3865
查看次数

Java不推荐使用的API和SuppressWarnings“不推荐使用”-实用方法

我已经看到了许多在API使用Deprecated注释以将其标记为“需要尽快替换”的示例。

但是,在几乎所有这些情况下,代码开发人员不仅继续使用已弃用的API,而且还抑制了弃用警告

API开发人员的最佳意图似乎最终是创建更多与已实现的业务逻辑无关的代码-如果不赞成使用API​​,但在抑制相关警告的情况下继续使用它,则似乎充其量只是代码的降级,并且在IMHO最差的情况下替换不推荐使用的库时,可能会导致应用程序中断。

有解决这个问题的切实可行的方法吗?至少,如果确实在CR中保留了较长时间,是否可以将这种情况标记为代码气味?

请提出您可能正在使用的实际解决方案(库,SCA,CR插件等.....)

是否有计划中的JRE / JDK功能可以帮助解决这种情况?我的研究目前还没有发现任何东西。

参考文献:

java deprecated suppress-warnings deprecation-warning

6
推荐指数
1
解决办法
945
查看次数

"java.lang.UnsupportedOperationException:尚不支持."

我想做什么:

我正在尝试使用Java连接到Web Portal [使用https].我编写了使用Authenticator类提供用户凭据的代码.当我运行程序时,我得到一个异常:"java.lang.UnsupportedOperationException:Not supported yet"

我发布了代码:

__CODE__ 根据Dreamweaver:


public class Main {

    public class MyAuthenticator extends Authenticator {

        protected PasswordAuthentication getpasswordAuthentication() {
            String username = "username";
            String password = "password";
            // Return the information
            return new PasswordAuthentication(username, password.toCharArray());
        }

        @Override
        public Result authenticate(HttpExchange he) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
    }

    public static void main(String[] args) {
        // TODO code application logic here


        TrustManager[] trustClients = new TrustManager[]{
            new X509TrustManager() {

                public void checkClientTrusted(X509Certificate[] xcs, String string) throws …

java ssl

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