Tag: 处理

使用bool(返回Type)来处理exception或将exception传递给客户端?

我试图找出处理exception的最佳方法,我的应用程序有很多层,并开始使用返回类型的BOOL,即如果失败则返回False,如果成功则返回True .. 这在SaveMyRecord(somerecord)等方法中效果很好; 因为我传递的值并且不需要任何返回,所以我可以使用bool的返回类型来指示它是否成功。 但后来它让我觉得像GetMyRecord()这样的东西实际上返回了IQueryable的类型,因此我不能用bool告诉我它是否失败。 事情是我处理很多我的错误,他们发生尝试和捕获,因此不希望客户端收到exception。 也许有更好的方法,然后我考虑使用OUT参数但这意味着我需要更改所有方法的签名并添加aditional params .. 也许我应该将exception传递回CLIENT并在那里处理它? 是否有一些标准或任何文档来提供最佳实践?

匿名事件处理程序和处理

关于匿名事件处理程序,我有一个相当简短的问题: 这是我的代码 : public void AddTestControl(Control ctrl) { ctrl.Disposed += (o, e) => { RemoveTestControl(ctrl); }; ctrl.SomeEvent += _Control_SomeEvent; } public void RemoveTestControl(Control ctrl) { ctrl.SomeEvent -= _Control_SomeEvent; } 此代码是否正常,或者是否应重写代码以删除Disposed Event Handler? 像这样的东西: public void AddTestControl(Control ctrl) { ctrl.Disposed += _Control_Disposed; ctrl.SomeEvent += _Control_SomeEvent; } public void RemoveTestControl(Control ctrl) { ctrl.Disposed -= _Control_Disposed; ctrl.SomeEvent -= […]

如何在WXP(和更新的MSWindows)上使用C#终止所有子进程

问题:如何确定子进程树中的所有进程以杀死它们? 我有一个用C#编写的应用程序,它将: 从服务器获取一组数据, 然后,生成第三方实用程序来处理数据 将结果返回给服务器。 这工作正常。 但是由于运行会占用大量 CPU并且可能需要长达一个小时,因此我想添加使我的应用程序终止其子进程的能力。 使我在其他地方找到的简单解决方案的一些问题是: 我的应用程序的子进程“A”(我认为是InstallAnywhere EXE)产生真正的处理应用程序“B”(一个java.exe ),它反过来产生更多的孩子“C1”..“Cn”(其中大部分也是用使用Java)。 我的应用程序可能有多个副本 (因此,它的多个子集)在同一台机器上运行。 子进程不在我的控制范围内,因此将来可能会有一些“D”进程。 我的应用程序必须在32位和 64位版本的MSWindows上运行。 从好的方面来说,没有数据丢失的问题,只要流程以相当快的速度结束,“干净”关闭就无关紧要了。

库中的exception处理策略

构建.NET库时,您的exception处理策略是什么? 具体来说,您在处理库调用中的exception并将它们暴露给调用代码的策略是什么? 例如, 您是否将库函数视为任何其他函数,从而让它无法处理的所有exception都按原样流出? 您会为该库创建自定义例外吗? 你会捕获所有exception并抛出库的exception吗? 您是否将原始exception设置为库的exception内部exception? 库对数据库的依赖会如何影响您的exception处理策略? 您建议在.NET库中进行exception处理的准则和规则是什么?

捕获特定的WebException(550)

假设我创建并执行System.Net.FtpWebRequest 。 我可以使用catch (WebException ex) {}来捕获此请求引发的任何与Web相关的exception。 但是如果我有一些逻辑,我只想在由于(550) file not found引发exception时执行? 最好的方法是什么? 我可以复制exception消息并测试相等性: const string fileNotFoundExceptionMessage = “The remote server returned an error: (550) File unavailable (eg, file not found, no access).”; if (ex.Message == fileNotFoundExceptionMessage) { 但从理论上讲,这条消息似乎可以改变。 或者,我可以测试以查看exception消息是否包含“550”。 如果消息被更改,这种方法可能更有效(它可能在文本中的某处仍然包含“550”)。 但是,如果某些其他WebException的文本碰巧包含“550”,那么这样的测试当然也会返回true。 似乎没有一种方法可以只访问exception的数量 。 这可能吗?

在使用C#中返回用于使用的变量

我正在使用using语句中的using语句返回我正在创建的变量(听起来很有趣): public DataTable foo () { using (DataTable properties = new DataTable()) { // do something return properties; } } 这将Dispose属性变量?? 这样做后仍然得到这个警告: 警告34 CA2000:Microsoft.Reliability:在方法’test.test’中,在对所有引用超出范围之前,在对象’properties’上调用System.IDisposable.Dispose。 有任何想法吗? 谢谢

Dispose方法应该进行unit testing吗?

我正在使用C#。 是否建议unit testing处理方法? 如果是这样,为什么要测试这些方法呢?

如何确定给定的hWnd是否仍然有效?

我正在使用第三方类来生成Internet Explorer实例。 该类有一个属性hWnd,它返回进程的hWnd。 接下来,我可能想要重用应用程序的实例(如果它仍然存在),所以我需要告诉我的帮助程序类附加到它。 在此之前,我想知道给定的hWnd是否仍然有效,否则我将生成另一个实例。 我怎样才能在C#和.NET 3.5中执行此操作?

.net新进程沙箱,用于不受信任的代码

所以我需要在新进程中运行动态编译的不受信任的代码。 我发现如何在新的AppDomain(http://msdn.microsoft.com/en-us/library/bb763046.aspx)中执行此操作,但不是新进程。 有可能吗? 我需要新进程的原因是因为它更容易捕获标准输出,查看内存和CPU消耗并终止它。 最终目标是编写在线C#编译器。

捕获所有内部exception详细信息的最佳实践是什么?

记录完整exception详细信息(包括所有可能的内部exception)的最佳做法是什么? 目前,我使用以下代码: try { //some code that throws an exception } catch(Exception ex) { do { Console.WriteLine(ex.Message+ex.StackTrace); ex=ex.InnerException; }while(ex!=null) } 是否存在此代码可能失败的情况?