Silverlight代码协定和异常杂记
2010-09-12 11:15
302 查看
前置条件
Contract.Requires( x != null );
旧式
if ( x == null ) throw new ...
Contract.EndContractBlock(); // All previous "if" checks are preconditions
代码协定提供一种使用代码指定前置条件、后置条件和对象固定条件的方式。前置条件是在输入方法或属性时必须满足的要求。后置条件描述代码退出时的预期的方法或属性。对象固定条件描述正常状态下的类的预期状态。
如果代码必须在前置条件失败时引发特定的异常,则可以使用 Requires 的泛型重载,如下所示。
Contract.Requires<ArgumentNullException>( x != null, "x" );
异常类和属性
Exception 类的若干属性使了解异常更容易。这些属性包括:
StackTrace 属性。
此属性包含可用来确定错误发生位置的堆栈跟踪。如果有可用的调试信息,则堆栈跟踪包含源文件名和程序行号。
InnerException 属性。
此属性可用来在异常处理过程中创建和保留一系列异常。可使用此属性创建一个新异常来包含以前捕捉的异常。原始异常可由 InnerException 属性中的第二个异常捕获,这使处理第二个异常的代码可以检查附加信息。
为提高调用方确定异常引发原因的能力,有时可能需要方法捕捉帮助器例程引发的异常,然后引发一个进一步指示已发生的错误的异常。可以创建一个更有意义的新异常,其中内部异常引用可以设置为原始异常。然后可以针对调用方引发这种更有意义的异常。请注意,使用此功能,可以创建以最先引发的异常作为结束点的一系列相链接的异常。
Message 属性。
此属性提供有关异常起因的详细信息。消息以引发异常的线程的 Thread..::..CurrentUICulture 属性所指定的语言显示。
Data 属性
此属性是可以保存任意数据(以键值对的形式)的 IDictionary。
Contract.Requires( x != null );
旧式
if ( x == null ) throw new ...
Contract.EndContractBlock(); // All previous "if" checks are preconditions
代码协定提供一种使用代码指定前置条件、后置条件和对象固定条件的方式。前置条件是在输入方法或属性时必须满足的要求。后置条件描述代码退出时的预期的方法或属性。对象固定条件描述正常状态下的类的预期状态。
如果代码必须在前置条件失败时引发特定的异常,则可以使用 Requires 的泛型重载,如下所示。
Contract.Requires<ArgumentNullException>( x != null, "x" );
名称 | 说明 | |
Assert(Boolean) | 检查条件,如果该条件为 false,则输出调用堆栈。 | |
Assert(Boolean, String) | 检查条件,如果该条件为 false,则显示指定的消息。 | |
Assert(Boolean, String, String) | 检查条件,如果该条件为 false,则显示指定的两条消息。 | |
Assert(Boolean, String, String, array<Object>[]()[][]) | 检查条件,如果该条件为 false,则输出消息和调用堆栈。 | |
WriteLine(Object) | 使用 OutputDebugString 函数将指定对象的 ToString 方法的值写入调试器。 | |
WriteLine(String) | 使用 OutputDebugString 函数将指定的后跟行终止符的消息写入调试器。 | |
WriteLine(String, array<Object>[]()[][]) | 使用 OutputDebugString 函数将后跟行终止符的带格式字符串写入调试器。 |
Exception 类的若干属性使了解异常更容易。这些属性包括:
StackTrace 属性。
此属性包含可用来确定错误发生位置的堆栈跟踪。如果有可用的调试信息,则堆栈跟踪包含源文件名和程序行号。
InnerException 属性。
此属性可用来在异常处理过程中创建和保留一系列异常。可使用此属性创建一个新异常来包含以前捕捉的异常。原始异常可由 InnerException 属性中的第二个异常捕获,这使处理第二个异常的代码可以检查附加信息。
为提高调用方确定异常引发原因的能力,有时可能需要方法捕捉帮助器例程引发的异常,然后引发一个进一步指示已发生的错误的异常。可以创建一个更有意义的新异常,其中内部异常引用可以设置为原始异常。然后可以针对调用方引发这种更有意义的异常。请注意,使用此功能,可以创建以最先引发的异常作为结束点的一系列相链接的异常。
Message 属性。
此属性提供有关异常起因的详细信息。消息以引发异常的线程的 Thread..::..CurrentUICulture 属性所指定的语言显示。
Data 属性
此属性是可以保存任意数据(以键值对的形式)的 IDictionary。
相关文章推荐
- 前端代码异常监控
- Nuva 示例代码(每日一帖)之 异常处理
- 一步一步学Silverlight 2系列(22):在Silverlight中如何用JavaScript调用.NET代码
- 中断与异常 代码 总结
- SEH异常机制杂记
- silverlight用webclient大文件上传的实例代码
- 从C#到Objective-C,循序渐进学习苹果开发(4)--代码块(block)和错误异常处理的理解
- WCF duplex service + silverlight 聊天代码
- 在C#代码中获取Silverlight的初始化initparams参数
- ARM-IRQ异常处理代码
- Android 代码崩溃异常收集整理
- WPF在代码中创建DataTemplate时候的异常
- SSH整合遇见代码异常(一)
- Silverlight获取WCF的异常-2
- Silverlight DataGrid行验证,直接是代码 不解释了
- python学习第十章文件和异常部分课后练习自己尝试的代码
- XCode的 Stack Trace,调试时抛出异常,定位到某一行代码
- Silverlight 异常-3
- java 抛出异常后,还会执行后面代码吗?
- silverlight应用程序中未处理的错误代码:2104 类别:InitializeError 消息:无法下载 iis上部署Silverlight