1

我将此方法添加到公共静态类

    public static LogMessage(Exception ex)
    {
        Trace.WriteLine(ex.ToString());
        return ex; 
    }

当我这样做时,我收到一条消息,上面写着“方法必须有返回类型”

并且在返回中我还收到一条消息,上面写着“由于'Util.logMessage(System.Exception)'返回void,return关键字后面不能跟对象表达式”

我该如何纠正?

4

5 回答 5

11

您需要更改声明以返回异常:

public static Exception LogMessage(Exception ex)
{
    Trace.WriteLine(ex.ToString());
    return ex; 
}

请注意,根据使用情况,允许这是一个通用方法可能是有意义的:

public static T LogMessage<T>(T ex) where T : Exception
{
    Trace.WriteLine(ex.ToString());
    return ex; 
}

这将允许您以强类型的方式使用生成的异常。

或者,您可以不返回异常,因为 Logging 在任何情况下都不需要返回异常:

public static void LogMessage(Exception ex)
{
    Trace.WriteLine(ex.ToString());
}
于 2013-07-23T19:09:27.060 回答
2

您的方法签名没有返回类型。根据代码,我猜你想要:

public static Exception LogMessage(Exception ex)
{
    Trace.WriteLine(ex.ToString());
    return ex;
}

这真的没有任何意义。记录后没有理由返回异常。你真的可以简单地做:

public static void LogMessage(Exception ex)
{
    Trace.WriteLine(ex.ToString());
}
于 2013-07-23T19:09:56.433 回答
1
public static Exception LogMessage(Exception ex)
{
    Trace.WriteLine(ex.ToString());
    return ex; 
}
于 2013-07-23T19:09:34.203 回答
1

如果要返回异常:

 public static Exception LogMessage(Exception ex)

如果无效:

 public static void LogMessage(Exception ex)
于 2013-07-23T19:09:55.837 回答
0

任何有返回值的方法都必须指定返回类型。

你的情况:

public static Exception LogMessage(Exception ex)
{
    Trace.WriteLine(ex.ToString());
    return ex; 
}

如果你想返回一个字符串:

public static string LogMessage(Exception ex)
{
     return ex.ToString();
}

在没有返回的方法中看到的void修饰符只是说明返回是 type void。在这种情况下,您的回报将是Exception. 一个方法应该总是有一个返回类型,无论它是void一个标准类型,比如stringor int,还是你的类的类型中的一个对象,比如MyClass. 它还可以返回一个泛型,例如List<T>or object

但是,在这种情况下,正如其他人所说,返回异常确实没有意义。

于 2013-07-23T19:14:30.453 回答