我将此方法添加到公共静态类
public static LogMessage(Exception ex)
{
Trace.WriteLine(ex.ToString());
return ex;
}
当我这样做时,我收到一条消息,说“方法必须有返回类型”
并且在返回时我还收到一条消息“由于'Util.logMessage(System.Exception)'返回void,返回关键字后面不能跟一个对象表达式”
我该如何纠正?
答案 0 :(得分: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());
}
答案 1 :(得分:2)
您的方法签名没有返回类型。根据代码,我猜你想要:
public static Exception LogMessage(Exception ex)
{
Trace.WriteLine(ex.ToString());
return ex;
}
这真的没有意义。记录后没有理由返回异常。你真的可以这样做:
public static void LogMessage(Exception ex)
{
Trace.WriteLine(ex.ToString());
}
答案 2 :(得分:1)
public static Exception LogMessage(Exception ex)
{
Trace.WriteLine(ex.ToString());
return ex;
}
答案 3 :(得分:1)
如果要返回异常:
public static Exception LogMessage(Exception ex)
如果无效:
public static void LogMessage(Exception ex)
答案 4 :(得分: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
,标准类型(如string
还是int
),还是类所属的对象,例如{{ 1}}。它还可以返回通用内容,例如MyClass
或List<T>
。
在这种情况下,正如其他人所说的那样,返回异常确实没有意义。