";方法必须具有返回类型“”;以及“;return后面不能跟有对象表达式“;
本文关键字:return 不能 表达式 对象 以及 方法 返回类型 quot | 更新日期: 2023-09-27 18:24:25
Im正在将此方法添加到公共静态类中
public static LogMessage(Exception ex)
{
Trace.WriteLine(ex.ToString());
return ex;
}
当我这样做的时候,我会收到一条消息,上面写着"方法必须有一个返回类型"
在返回中,我还得到一条消息,上面写着"由于‘Util.logMessage(System.Exception)’返回void,所以返回关键字后面不能跟对象表达式"
我该如何更正?
您需要更改声明以返回异常:
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
。
然而,在这种情况下,正如其他人所说,返回异常确实没有意义。