Visual Basic .NET 中的异常处理简介(4)

2008-04-09 04:43:13来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


  总结

  到现在为止,您应该清楚地了解了结构化异常处理和非结构化异常处理之间的区别,以及 Visual Basic .NET 中结构化异常处理功能的优势。通常情况下,结构化异常处理即可满足您的需求,但在少数情况下仍然可能需要使用非结构化异常处理。

  在确保异常得到处理的同时,不要过多地列举它们,否则会导致性能下降。Try 结构是很有条理的,易于编写且易于阅读,它能生成有效的代码。编写处理一个或多个可能异常的代码时,都应该使用该结构。此方法极其有效,您甚至愿意在正常情况下使用异常来控制逻辑流程。例如,替代 If 或 Select 语句。处理异常是很有效的,但应该到真正发生异常时使用。

  下表列出了预定义的异常类及其起因和派生类。

表 1

异常类 产生原因 派生类 AppDomainUnloadedException 尝试访问未加载的应用程序域 无 ArgumentException 为方法提供的一个或多个参数无效 ArgumentNullException

ArgumentOutOfRangeException

ComponentModel.InvalidEnum
ArgumentException

DuplicateWaitObjectException

ArithmeticException 在算法、强制类型转换或转换操作上发生错误 DivideByZeroException

NotFiniteNumberException

OverflowException

ArrayTypeMismatchException 尝试在数组中存储错误类型的元素 无 BadImageFormatException DLL 或可执行程序的文件映像无效 无 CannotUnloadAppDomainException 尝试卸载应用程序域失败 无 ComponentModel.Design.Serialization.
CodeDomSerializerException 产生序列化错误的行号信息 无 ComponentModel.LicenseException 无法为组件授予许可证 无 ComponentModel.WarningException 异常被作为警告而不是错误处理 无 Configuration.ConfigurationException 配置设置中发生错误 无 Configuration.Install.InstallException 在安装过程的提交、回滚或卸载阶段发生错误 无 ContextMarshalException 尝试通过上下文范围封送对象失败 无 Data.DataException 使用 ADO.NET 组件时产生错误 Data.ConstraintException

Data.DeletedRowInaccessibleException

Data.DuplicateNameException

Data.InRowChangingEventException

Data.InvalidConstraintException

Data.InvalidExpressionException

Data.MissingPrimaryKeyException

Data.NoNullAlllowedException

Data.ReadOnlyException

Data.RowNotInTableException

Data.StringTypingException

Data.TypedDataSetGeneratorException

Data.VersionNotFoundException

Data.DBConcurrencyException 在升级操作中,DataAdapter 确定受影响的行数等于零 无 Data.SqlClient.SqlException SQL Server 返回警告或错误 无 Data.SqlTypes.SqlTypeException Data.SqlTypes 的异常基类 Data.SqlTypes.SqlNullValueException

Data.SqlTypes.SqlTruncateException

Drawing.Printing.
InvalidPrinterException 使用无效的打印机设置尝试访问打印机 无 EnterpriseServices.
RegistrationException 检测到注册错误 无 EnterpriseServices.Serviced
ComponentException 在运行的组件上检测到错误 无 ExecutionEngineException 在公共语言运行时的执行引擎上存在内部错误 无 FormatException 参数的格式不符合调用方法的参数规定 Net.CookieException

Reflection.CustomAttribute
FormatException

UriFormatException

IndexOutofRangeException 尝试访问其索引在数组范围之外的数组元素 无 InvalidCastException 无效的强制类型转换或显式转换 无 InvalidOperationException 方法调用对于对象的当前状态无效 Net.ProtocolViolationException

Net.WebException

ObjectDisposedException

InvalidProgramException 程序包含无效的 Microsoft 中间语言或元数据 无 IO.InternalBufferOverflowException 内部缓冲区溢出 无 IO.IOException 发生 I/O 错误 IO.DirectoryNotFoundException

IO.EndOfStreamException

IO.FileLoadException

IO.FileNotFoundException

IO.PathTooLongException

Management.ManagementException 管理错误 无 MemberAccessException 尝试访问类成员失败 FieldAccessException

MethodAccessException

MissingFieldException

MissingMemberException

MissingMethodException

MulticastNotSupportedException 尝试组合两个无法组合的代理类型实例,两者的操作数都为非空引用 无 NotImplementedException 未执行要求的方法或操作 无 NotSupportedException 不支持所调用的方法,或者尝试在不支持所调用函数的流中进行读取、查找或写入 PlatformNotSupportedException NullReferenceException 尝试取消引用空对象引用 无 OutOfMemoryException 内存不足以完成执行程序 无 RankException 将具有错误维数的数组传递给方法 无 Reflection.AmbiguousMatch
Exception 绑定方法时导致多个方法符合绑定条件 无 Reflection.ReflectionType
LoadException Module.GetTypes 方法导致模块中的一个或多个类无法加载 无 Resources.MissingManifest
ResourceException 主要程序集不包含非特定语言的资源,但它们又是必需的,因为缺少合适的辅助程序集 无 Runtime.InteropServices.
ExternalException 所有 COM 互操作异常和结构化异常处理异常的基本异常类型 ComponentModel.Design.
CheckoutException

ComponentModel.Win32Exception

Data.OleDb.OleDbException

Messaging.MessageQueueException

Runtime.InteropServices.COMException

Runtime.InteropServices.SEHException

Web.HttpException

Runtime.InteropServices.
InvalidComObjectException 使用了无效的 COM 对象 无 Runtime.InteropServices.
InvalidOleVariantTypeException 封送器遇到无法封送到管理代码的变体类型参数 无 Runtime.InteropServices.

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:如何用VB.Net创建一个三层的数据库应用程序

下一篇:VB.NET注册表编程