【问题标题】:Exception handling in .NET vs Java [duplicate].NET 与 Java 中的异常处理 [重复]
【发布时间】:2015-09-11 22:26:21
【问题描述】:

我正在将我为 Java 编写的库移植到 .NET C#,并且我正在处理两个世界之间异常处理方面的差异。

特别是我有一个abstract 类,我用它作为基类来实现几个服务。在这个类中,我有这些方法:

public void MyConcreteMethod(){

    //...
    try {
        initialize();
    } catch(InitializationException ex){
        // ...
    }

    // ...

}

public abstract void initialize() throws InitializationException;

每个扩展类都必须以自己的方式实现initialize,我清楚地知道我需要处理一些可能的InitializationException

在 C# 中,我像这样转换了我的代码:

public void MyConcreteMethod(){

    //...

    Initialize();

    // ...

}

public abstract void Initialize();

但是这样我就没有关于可能的初始化问题的明确信息:在某些类中我可以抛出异常,而在其他类中我不能。

那么我应该在MyConcreteMethod 中处理它们吗?我抓住了哪个例外?一个通用的Exception?

【问题讨论】:

标签: java c# exception exception-handling


【解决方案1】:

唯一的区别是Java有一些检查异常,而C#没有。

由于您要移植的代码最初是用 Java 编写的,并且假设它具有正确的异常处理(这应该与语言无关),那么只需 在 C# 代码中的相同位置捕获异常Java 代码会捕获它们。


在没有签名级异常子句的情况下,将可能的异常传达给 API 用户的标准 .NET 实践是简单地记录它们。您可以在程序集文档和 Web 文档(如果适用)中记录它们。

【讨论】:

    猜你喜欢
    • 2013-03-15
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    相关资源
    最近更新 更多