2013-07-23 42 views
1

林添加這個方法到公共靜態類「方法必須返回類型」和「返回不能跟一個對象表達式」

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

當我這樣做,我得到一個消息,說「方法必須具有返回類型」

並且在返回中,我還收到一條消息,指出「自''Util.logMessage(System.Exception)'返回void,返回關鍵字後面不能有對象表達式」

我該如何糾正?

+5

錯誤的哪部分你不明白? – SLaks

+0

您的代碼與錯誤消息不匹配...通常,將代碼和錯誤複製並粘貼到IDE /編譯器存在的代碼和錯誤通常是一個好主意。 –

回答

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

這將允許您以強類型的方式使用產生的異常。

或者,你可以只是沒有返回例外,因爲日誌記錄不應該需要在任何情況下返回異常:

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

+1爲仿製藥 – pascalhein

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

如果你想要回例外:

public static Exception LogMessage(Exception ex) 

如果無效:

public static void LogMessage(Exception ex) 
2

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

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

這真的沒有任何意義。沒有理由在記錄後返回異常。你真的可以簡單地做:

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

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

你的情況:

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

在這種情況下,正如其他人所說的那樣,返回異常確實沒有意義。

相關問題