gpt4 book ai didi

c# - 方法抛出错误而不是返回 null。为什么?

转载 作者:行者123 更新时间:2023-11-30 14:33:20 25 4
gpt4 key购买 nike

我有时会遇到错误:

There is not a header with name UserName and namespace http://www.website.com/ in the message.

堆栈跟踪

System.ServiceModel.Channels.MessageHeaders.GetHeader[T](String name, String ns, String[] actors) Common.Utilities.WCF.WcfCallContext.TryGetHeader(String key) Common.Utilities.WCF.WcfCallContext.get_UserName()

这是两种方法:

    private static string TryGetHeader( string key )
{
try
{
return GetHeader( key );
}
catch
{
return null;
}
}

private static string GetHeader( string key )
{
var headers = OperationContext.Current.IncomingMessageHeaders;
var value = headers.GetHeader<string>( key, "http://www.website.com/", "Project" );
return value;
}
}

所以 TryGetHeader(使用 try 和 catch)正在调用 GetHeader。显然它打破了:

var value = headers.GetHeader<string>( key, "http://www.website.com/", "Project" );

为什么 TryGetHeader 没有将其捕获为错误并且没有返回 null?就好像它在 GetHeader 中中断并停止而不是在 TryGetHeader 中返回错误?

最佳答案

如果您调用 TryGetHeader,则会捕获该异常。我强烈怀疑您看到的是“第一次机会异常”,或者是在 IDE/调试器中看到的异常。那是一个幻影:异常并不真正存在(或者更确切地说,它会在正常执行中被捕获)。尝试关闭 IDE 中的异常处理选项。

关于c# - 方法抛出错误而不是返回 null。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16689201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com