科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网›软件频道 ›基础软件›Visual Basic .NET 中的异常处理简介

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文简单介绍了 Visual Basic .NET 中的结构化异常处理和非结构化异常处理。文中包括了各种注意事项......

作者:佚名 来源:Microsoft 2007年11月10日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
 总结

  到现在为止,您应该清楚地了解了结构化异常处理和非结构化异常处理之间的区别,以及 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.
MarshalDirectiveException
封送器遇到不支持的 MarshalAsAttribute 无
Runtime.InteropServices.
SafeArrayRankMismatchException
传入 SAFEARRAY 的名次与管理签名中指定的名次不匹配 无
Runtime.InteropServices.
SafeArrayTypeMismatchException
传入 SAFEARRAY 的类型与管理签名中指定的类型不匹配 无
Runtime.Remoting.RemotingException 远程操作时发生错误 Runtime.Remoting.Remoting
TimeOutException
Runtime.Remoting.ServerException 用于在客户端连接到无法产生异常的非 .NET 框架应用程序时传递异常 无
Runtime.Serialization.
SerializationException
序列化或反序列化过程中发生错误 无
Security.Crytography.
CryptographicException
加密操作过程中发生错误 Security.Cryptography.
CryptographicUnexpected
OperationException
Security.Policy.PolicyException 策略禁止代码运行 无
Security.SecurityException 检测到安全性错误 无
Security.VerificationException 安全策略要求代码的类型安全,而验证程序无法验证代码是否类型安全 无
Security.XmlSyntaxException XML 分析时出现语法错误 无
ServiceProcess.TimeoutException 指定的超时已过期 无
StackOverflowException 待定的方法调用太多,导致执行堆栈溢出 无
Threading.SynchronizationLockException 在代码的异步块中调用同步方法 无
Threading.ThreadAbortException 调用 Abort 方法 无
Threading.ThreadInterruptedException 在 WaitSleepJoin 状态时线程中断 无
Threading.ThreadStateException 方法调用的无效 ThreadState 中的线程 无
TypeInitializationException 围绕类初始化程序产生的异常而产生的包装 无
TypeLoadException 类型加载失败 DllNotFoundException

EntryPointNotFoundException

TypeUnloadedException 尝试访问已卸载的类 无
UnauthorizedAccessException 操作系统拒绝访问,因为存在 I/O 错误或特定类型的安全性错误 无
Web.Services.Protocols.SoapException 在 SOAP 上调用 XML Web 服务方法而导致错误 Web.Services.Protocols.
SoapHeaderException
Xml.Schema.XmlSchemaException   无
Xml.XmlException   无
Xml.Xpath.XpathException 处理 Xpath 表达式时发生错误 无
Xml.Xsl.XsltException 处理可扩展样式表语言 (XSL) 转换时发生错误 System.Xml.Xsl.XsltCompileException

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章