C# 连接字符串和异常消息

C# 连接字符串和异常消息,c#,string,exception-handling,concatenation,xsd-validation,C#,String,Exception Handling,Concatenation,Xsd Validation,当我的XSD无效时,我试图捕获一个异常,并在控制台上显示一条消息,向用户详细说明出错的原因。但是,控制台上显示的消息与我预期的不同 try { // doing stuff here } catch (XmlException e) { Console.WriteLine("ERROR: Schema " + e.Message); return false; } 我希望输出类似于: "ERROR: Schema ' is an unexpected token. Th

当我的XSD无效时,我试图捕获一个异常,并在控制台上显示一条消息,向用户详细说明出错的原因。但是,控制台上显示的消息与我预期的不同

try
{
    // doing stuff here
}
catch (XmlException e)
{
    Console.WriteLine("ERROR: Schema " + e.Message);
    return false;
}
我希望输出类似于:

"ERROR: Schema ' is an unexpected token. The expected token is '>'. Line 15, position 38."
然而,我得到的结果是:

"' is an unexpected token. The expected token is '>'. Line 15, position 38."
消息前不显示开头的My字符串


我尝试将值存储在两个字符串中,并尝试连接这两个字符串,但没有成功。理想情况下,我希望一个字符串同时包含“错误”部分和异常生成的消息。

我认为您的模式包含一个换行符。文本
ERROR:Schema'
必须位于输出窗口中较高的位置

您可以使用以下方法进行检查:

catch (XmlException e)
{
    string message = "ERROR: Schema " + e.Message;
    message = message.Replace(Environment.NewLine, "");
    message = message.Replace("\n", "");
    message = message.Replace("\r", "");

    Console.WriteLine(message);
    return false;
}
尝试:

try
{
    // doing stuff here
}
catch (XmlException e)
{
    errorMessage = "ERROR: Schema " + e.Message.toString();

    Console.WriteLine(errorMessage );
    return false;
}

如果进行调试,它是否会到达该断点?可能是您捕捉到了错误的例外情况。为什么消息开头只有一个引号?我想这是一个很大的线索。我希望意外标记周围有单引号。我已将其更改为Catch(异常e),并且相同的行为结果这会产生相同的结果:'是意外标记。所需的令牌为“>”。第15行,38号位置。这就成功了!所以我猜有一些空白字符?我不明白为什么我在控制台的任何地方都看不到输出的两个部分?如果你看不到上面某个地方的
错误:Schema'
,这意味着你的Schema包含回车符(
\r
)。思维良好的瑜伽士,手头没有实际的控制台输出+1.