Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET与Java中的异常处理_Java_C#_Exception_Exception Handling - Fatal编程技术网

.NET与Java中的异常处理

.NET与Java中的异常处理,java,c#,exception,exception-handling,Java,C#,Exception,Exception Handling,我正在将我为Java编写的一个库移植到.NETC#中,并处理这两个世界在异常处理方面的差异 特别是我有一个抽象类,我用它作为基类来实现几个服务。在本课程中,我有以下方法: public void MyConcreteMethod(){ //... try { initialize(); } catch(InitializationException ex){ // ... } // ... } public abst

我正在将我为Java编写的一个库移植到.NETC#中,并处理这两个世界在异常处理方面的差异

特别是我有一个
抽象类
,我用它作为基类来实现几个服务。在本课程中,我有以下方法:

public void MyConcreteMethod(){

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

    // ...

}

public abstract void initialize() throws InitializationException;
每个扩展类都必须实现自己的
初始化方法
,我清楚地知道我需要处理一些可能的
初始化异常

在C#中,我将代码转换为:

public void MyConcreteMethod(){

    //...

    Initialize();

    // ...

}

public abstract void Initialize();
但这样一来,我对可能出现的初始化问题并没有一个明确的信息:在某些类中,我可以抛出异常,而在其他类中,我不能


那么我应该在
MyConcreteMethod
中添加它们吗?我该抓住哪一个例外?一个通用的
异常

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

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


在没有签名级异常条款的情况下,向API用户传达可能的异常的标准.NET实践是简单地记录它们。您可以在装配文档和web文档(如果适用)中记录它们。

我想这就是您的答案:如果您想记录,那么: