[英]“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
,標准類型(例如string
或int
)或類屬於您的類的對象(例如MyClass
。 它還可以返回諸如List<T>
或object
的泛型。
但是,正如其他人所述,在這種情況下,返回異常確實沒有任何意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.