gpt4 book ai didi

c# - .net : debugger highlighting line of code not actually being executed

转载 作者:太空狗 更新时间:2023-10-29 22:55:53 25 4
gpt4 key购买 nike

将以下内容复制并粘贴到 VS 中的新控制台应用程序中。添加对 System.Web 和 System.Web.Services 的引用(我知道控制台应用程序不需要这些程序集,我只是向您展示一段在我的 Web 应用程序中不起作用的代码)。

虽然 if 语句中的两个条件都为假,但事实证明它为真。任何人都知道为什么? (Visual Studio 2008 9.0.30729.1).NET 3.5 SP1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Services;
using System.Web;

namespace ConsoleApplication8
{
class Program
{
static void Main(string[] args)
{
string x = "qweqweqw";
string y =
"{\"textMedia\":[-1,-1,-1,-1,-1],\"textOperand\":[1,1,1,1,1],\"textString\":[\"\",\"\",\"\",\"\",\"\"],\"dateSite\":[-11],\"dateOperand\":[],\"dateString\":[],\"status\":[-11,0,0],\"media\":[-11,0,0],\"subItem\":true,\"context\":false,\"branchSearch\":false,\"profileIDs\":[2,5,18],\"profileViewIDs\":[48,58,38],\"currentSelectedBranch\":0}";

SaveSearch(x, y);
}

[WebMethod]
public static object SaveSearch(string name, string encodedSearch)
{
object response = new { };

string x = name;
string y = encodedSearch;

// Why does this if statement throw an exception if both equal false?
if (x.Trim().Equals(string.Empty) || y.Trim().Equals(string.Empty))
throw new AjaxErrorException("Save Search", "Something went wrong", "JSFunction");


try
{
{
return new
{
error = false,
name = name,
userID = 123,
date = DateTime.Now
};
}
}
catch (Exception ex)
{
String e;

if (HttpContext.Current.IsDebuggingEnabled)
e = ex.Message + "\n\n" + ex.StackTrace;
else
e = "error error aliens approaching";

throw new AjaxErrorException("Save Search", e, "");
}

return response;
}

public class AjaxErrorException : System.Exception
{
public AjaxErrorException(string title, string details, string function)
: base(title)
{ }
string _stackTrace;
public override string StackTrace
{
get
{
return _stackTrace;
}
}
}
}
}

最佳答案

我实际上检查过,虽然调试器进入了 if(throw 语句)之后的语句,但它实际上并没有抛出异常。我怀疑这是 IDE、生成的 IL 和调试器之间的不一致,特别是对于 throw 语句。如果您尝试其他类型的语句,您实际上看不到问题。好像也和这篇文章有关 If statement weirdness in Visual Studio 2008

我在 if block 中插入了 assert 语句,如下所示,以确保没有触发断言。

System.Diagnostics.Debug.Assert(false);

关于c# - .net : debugger highlighting line of code not actually being executed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2421436/

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