Tag: 例外

所有.NETexception都是可序列化的吗?

是否可以序列化所有.NETexception对象?

使用标准try / catch包装对类的方法的调用

我有一个有大约200多个方法的类,这些方法中的每一个都调用数据库或网络资源。 理想情况下,我想将每个调用包装在try / catch中,以捕获任何常见的网络或SQLexception,并让用户有机会再次尝试(如果适用)。 但是,将此代码添加到每个调用将非常耗时,并且就代码而言是膨胀的。 我已经考虑过在另一个方法中包装每个方法调用,创建一个委托,并将委托代码包装在try / catch中……就像这样…… (忽略语法……这只是一个概念性的例子) bool CallUpdatePassenger(int PassengerId,string PassengerName,string PhoneNumber) { Delegate del= Delegate.CreateDelegate(typeof(UpdatePassengerDelegate), typeof(IPassengerServices).GetMethod(“RemoteUpdatePassenger”)); bool Res=(bool)CallDelegate(del,PassengerName,PhoneNumber); } object CallDelegate(Delegate del,params object[] args) { object Result=null; try { Result=del.DynamicInvoke(args); } catch (Some.Timeout.Error.Or.Whatever te) { // take some action.. maybe retry etc.. } return Result; } 也许还有一种更实用的方法呢? 代码是自动生成的(通过我编写的工具)我可以很容易地包含上面的内容,但我想避免为每个方法调用编写上面的代码。 另外,如果我做了类似上面的事情,我可以计时方法,并记录方法调用等。它看起来有点笨拙(而不是强类型)。 谢谢Rich。

.NET中的错误和exception有什么区别?

你能否向我解释一下错误和exception之间的区别?

返回自定义exception

我试图在C#中实现我自己的Exception类。 为此,我创建了一个派生自Exception的CustomException类。 class CustomException : Exception { public CustomException() : base() { } public CustomException(string message) : base(message) { } public CustomException(string format, params object[] args) : base(string.Format(format, args)) { } public CustomException(string message, Exception innerException) : base(message, innerException) { } public CustomException(string format, Exception innerException, params object[] args) : base(string.Format(format, args), innerException) { } […]

当TimeZoneInfo.ConvertTimeToUtc为某些DateTime值时调用exception

当我为这个特定的dt值运行代码时,当我调用ConvertTimeToUtc方法时会抛出exception。 我的本地机器timeZoneId是“GMT标准时间” var tzi = TimeZoneInfo.FindSystemTimeZoneById(“Central Standard Time”); var dt = new DateTime(1995, 4, 2, 2, 55, 0); var t = TimeZoneInfo.ConvertTimeToUtc(dt, tzi); 例外是: System.ArgumentException was unhandled Message=”The supplied DateTime represents an invalid time. For example, when the clock is adjusted forward, any time in the period that is skipped is invalid.\r\nParameter

一个exception处理程序,用于CLASS的所有exception

我有一个包含多个方法的类,并希望为它们提供一个exception处理程序。 这些方法有很多,并且它们有不同的参数,为每个方法编写try / catch都会很难看。 你是否知道我可以通过一个类中的exception处理程序来处理它们,它将处理它们。 更新: 很多人问我为什么。 原因是我用各种方法调用数据源。 所以我的类有函数getData1,gedData2,getData3,getData4,….,getDataN。 问题是无法检查连接是否仍处于打开状态,并且创建新连接非常昂贵。 所以我试图重用连接,如果下次调用的连接失败,我会抓住这个并重新连接并再试一次。 这就是为什么我需要这个try / catch所有块。 为所有function执行此操作: try{ datasource.getData() } catch(ConnectionException) { datasource.Connect(); datasource.getData() } 谢谢

System.Exception.Data属性

System.Exception类(实际上是任何exception)都具有Data属性,该属性几乎总是为空的。 抛出exception时,这个字段应该有用吗? 或者它有一些我不知道的内部用途?

C#最终执行的时间

拿这个代码: using System; namespace OddThrow { class Program { static void Main(string[] args) { try { throw new Exception(“Exception!”); } finally { System.Threading.Thread.Sleep(2500); Console.Error.WriteLine(“I’m dying!”); System.Threading.Thread.Sleep(2500); } } } } 这给了我这个输出: Unhandled Exception: System.Exception: Exception! at OddThrow.Program.Main(String[] args) in C:\Documents and Settings\username \My Documents\Visual Studio 2008\Projects\OddThrow\OddThrow\Program.cs:line 14 I’m dying! 我的问题是:为什么未处理的exception文本出现在finally的之前? 在我看来,在我们甚至不知道这个exception未处理之前,最终应该在堆栈展开时被解雇。 注意对Sleep()的调用 – 这些是在打印出未处理的exception之后发生的,就像它执行以下操作一样: 未处理的exception文本/消息 […]

在ASP.NET C中抛出exception#

只是说throw;之间有区别吗throw; 并throw ex; 假设ex是你正在捕捉的例外吗?

如何在.NET中从exception堆栈跟踪中隐藏当前方法?

我想知道是否有办法从方法内部抛出exception,但不在exception堆栈跟踪中包含该方法。 例如 void ThrowSomeException() { throw new SomeException(); } 然后,如果我从一个名为Foo()的方法调用该方法,我希望exception堆栈跟踪从at Foo() ,而不是at ThrowSomeException() 。 我假设如果可能的话,可能是通过在方法上使用属性。 我对一般的答案很感兴趣,但是如果这是不可能的,我真正要做的是为IEnumerable创建一个扩展方法AssertEqual() ,我将在NUnit测试中使用它。 因此,当我调用myEnumerable.AssertEqual(otherEnumerable)并且它失败时,NUnit应该在测试方法内报告错误,而不是在扩展方法内。 谢谢!