Tag: exception处理

使用C#处理Web项目中的exception的方法

处理catch语句中发生的exception的最佳方法是什么。 目前我们正在将exception消息写入响应对象的write方法。 但我想要一个解决方案,通过该解决方案,用户只会获得一些错误信息,但我们必须获得有关错误的详细说明。 我想知道在C#中用于exception处理的不同实践。

以编程方式将程序集安装到GAC中

我需要使用c#在GAC中安装程序集。 以下是我的代码: new System.EnterpriseServices.Internal.Publish().GacInstall(“MyAssembly.dll”); 上面的代码给出了错误: 需要绝对路径 但我需要这个运行而不使用静态文件路径(绝对路径)。 谁能告诉我它是否可能? 我在项目引用中添加了对程序集的引用。 我需要在GAC中安装此程序集。

在C#中处理exception时的良好做法

我在The Pragmatic Programmer和其他一些文章(包括来自Joel Spolsky的文章)中读过,你应该只在exception情况下抛出exception。 否则,您应该返回错误。 有时它是可能的(例如,返回-1 , -0或positive number ),但在其他情况下,这是不可能的。 我的意思是,如果你要返回一个类,你总是可以返回null ,但我认为这个想法是返回一些能够提醒调用者发生了什么的东西。 如果我总是返回null ,我认为说: 如果此方法返回null,则可能是因为A,B,C,D或E 那么,如何在C#中实现这一目标呢? 编辑: 在我发布这个问题后的几个小时,我在这里看到了另一个问题,问题本身就是关于发布的代码是一个好的做法。 我知道这是我在这里做的事情的另一种方式。 链接在这里: 一般财产缺点?

使用HttpModule进行exception处理

我们正在审查该公司系统的exception处理之一,并发现了一些有趣的事情。 大多数代码块(如果不是全部)都在try / catch块中,并且在catch块内部抛出了一个新的BaseApplicationException – 它似乎来自企业库。 我在这里遇到了一些麻烦,因为我没有看到这样做的好处。 (在任何时候发生另一个例外)其中一个开发人员一直在使用该系统说这是因为该类负责发布exception(发送电子邮件和类似的东西),但他不太确定。 在花了一些时间浏览代码之后,我非常有信心地说,这就是收集有关环境的信息而不是发布它。 我的问题是: – 将所有代码包装在try {} catch {}块中并且抛出新的exception是否合理? 如果是,为什么? 有什么好处? 我个人认为,使用HttpModule会更容易,注册Application事件的Error事件,并在模块内部执行必要的操作。 如果我们走这条路,我们会错过什么吗? 有什么缺点吗? 您的意见非常感谢。

C#try {} catch {}

嗨,谢谢你的阅读。 我是编程和C#和套接字编程的新手。 在我的代码中,我尝试捕获问题以在我的应用程序中提供故障。 下列: catch (ArgumentNullException e) { OnNetworkEvents eventArgs = new OnNetworkEvents(“Network Unavailable”, e.Message); OnUpdateNetworkStatusMessage(this, eventArgs); } catch (EncoderFallbackException e) { OnNetworkEvents eventArgs = new OnNetworkEvents(“Network Unavailable”, e.Message); OnUpdateNetworkStatusMessage(this, eventArgs); } catch (SocketException e) { OnNetworkEvents eventArgs = new OnNetworkEvents(“Network Unavailable”, e.Message); OnUpdateNetworkStatusMessage(this, eventArgs); } catch (ArgumentOutOfRangeException e) { OnNetworkEvents eventArgs = new OnNetworkEvents(“Network […]

在try中通过锁定锁定资源。 这是错的吗?

使用带有try块的锁有什么问题吗? 我记得在某个地方读过我们应该总是尝试在try块中放入最少量的代码并在内部锁定自己使用try-finally块,你们在这里看到了什么错误。我需要处理锁内的代码这一事实块可以抛出exception try { lock(syncblk) { // do some processing } } catch(Exception e) { // do something with exception }

任务和exception沉默

为什么在任务中抛出的exception是静默exception,你永远不知道是否抛出了某个exception try { Task task = new Task( () => { throw null; } ); task.Start(); } catch { Console.WriteLine(“Exception”); } 程序在完全沉默中成功运行! 线程的行为不同 try { Thread thread = new Thread( () => { throw null; } ); thread .Start(); } catch { Console.WriteLine(“Exception”); } 在这种情况下,将抛出空指针exception。 有什么不同?

C#没有捕获非托管C ++ DLL的未处理exception

我有一个从C#应用程序调用的非托管C ++ dll,我正在尝试使用C#应用程序捕获所有exception,以便在由于非托管exception导致dll失败的情况下,用户将获得半合适的错误消息(C#app是一个实现它自己的http处理程序的Web服务)。 我遇到的问题是并非所有类型都被捕获。 因此,如果我创建以下内容并执行C#应用程序,则dll会抛出错误并终止整个应用程序。 有任何想法吗? 这是在VS2005中使用.Net framework v2创建的 C ++ – Test.h #ifndef INC_TEST_H #define INC_TEST_H extern “C” __declspec(dllexport) void ProcessBadCall(); #endif C ++ – Test.cpp #include #include using namespace std; void ProcessBadCall() { vector myValues; int a = myValues[1]; cout << a << endl; } C# – Program.cs class Program { [DllImport(“Test.dll”, EntryPoint=”ProcessBadCall”)] […]

error handling我应该抛出exception吗? 或者在源头处理?

我有这种格式 asp.net MVC视图 – >服务层 – >存储库。 因此视图调用服务层,其中包含业务/validation逻辑,然后调用存储库。 现在,我的服务层方法通常具有bool返回类型,因此如果数据库查询已经完成,我可以返回true。 或者如果失败了。 然后向用户显示通用消息。 我当然会用elmah记录错误。 但是我不确定我应该如何达到这一点。 就像现在我的Repository有更新,创建,删除的void返回类型。 所以说如果更新失败,我应该在我的存储库中有一个try / catch引发错误,然后我的服务层捕获它并执行elmah信令并返回false? 或者我应该让这些存储库方法返回“bool”,尝试/捕获存储库中的错误,然后将“true”或“false”返回到服务层,然后返回“true”或“false”到视图? exception处理仍然让我感到困惑的是如何处理错误以及何时抛出以及何时捕获错误。

防止第三方组件的exception崩溃整个应用程序

我正在编写一个依赖于某些第三方DLL的multithreading应用程序。 我的问题是,当使用第三方库中的对象时,如果它在运行时引发exception,我无法捕获它并且它会冒泡并杀死整个应用程序。 我有许多不同的线程,每个线程使用来自此第三方库的自己的对象,我需要使用该对象副本的线程能够捕获并处理exception。 根据我所读到的内容,似乎第三方库实际上是在制作自己的线程并允许未捕获的exception。 .NET 2.0+行为允许这些exception终止整个应用程序。 我知道AppDomain.CurrentDomain.UnhandledException,但这不允许您阻止应用程序关闭。 作为参考,我正在.NET 4.0中编写一个控制台应用程序。 有没有人有任何解决方案/建议来阻止这些exception杀死我的应用程序?