簡體   English   中英

“方法必須具有返回類型”,並且“返回不能后跟對象表達式”

[英]“Method must have a return type” and “return must not be followed by an object expression”

我將此方法添加到公共靜態類

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

當我這樣做時,我收到一條消息,指出“方法必須具有返回類型”

並且在返回中,我還收到一條消息,指出“由於'Util.logMessage(System.Exception)'返回void,所以return關鍵字后不能包含對象表達式”

我該如何糾正?

您將需要更改聲明以返回異常:

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; 
}

這將允許您以強類型方式使用結果異常。

另外,您不能返回異常,因為在任何情況下日志記錄都不需要返回異常:

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

您的方法簽名沒有返回類型。 根據代碼,我猜您想要:

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

這真的沒有道理。 在記錄異常后沒有理由返回異常。 您確實可以簡單地做到:

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

如果要返回異常:

 public static Exception LogMessage(Exception ex)

如果無效:

 public static void LogMessage(Exception ex)

任何具有返回值的方法都必須指定返回類型。

您的情況:

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

如果要返回字符串:

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

在沒有返回值的方法中看到的void修飾符只是說明該返回值是void類型。 在這種情況下,您的返回將是Exception類型。 方法應始終具有返回類型,無論該類型是否為void ,標准類型(例如stringint )或類屬於您的類的對象(例如MyClass 它還可以返回諸如List<T>object的泛型。

但是,正如其他人所述,在這種情況下,返回異常確實沒有任何意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM