C#学习使用try-catch-finally错误处理表达式

2024-06-21 02:58

本文主要是介绍C#学习使用try-catch-finally错误处理表达式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

查了下catch语句异常的类型,做了总结。

public class TryCatchFinally_Test : MonoBehaviour 
{void Start () {//try-catch错误处理表达式try{//执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容}//catch可以有多个,也可以没有,每个catch可以处理一个特定的异常。//.net按照你catch的顺序查找异常处理块,如果找到,则进行处理,如果找不到,则向上一层次抛出。//如果没有上一层次,则向用户抛出,此时,如果你在调试,程序将中断运行,如果是部署的程序,将会中止。//如果没有catch块,异常总是向上层(如果有)抛出,或者中断程序运行。  catch (System.ArgumentNullException e) //如果try语句块中抛出的异常是ArgumentNullException,将转入该处执行,其他异常不处理。  {//除非try里面执行代码发生了异常,否则这里的代码不会执行}catch (System.Exception e){}//注意:如果没有catch语句块,那么finally块就是必须的。//如果你不希望在这里处理异常,而当异常发生时提交到上层处理,但在这个地方无论发生异常,都要必须要执行一些操作,就可以使用try finallyfinally //finally可以没有,也可以只有一个{//不管什么情况都会执行,包括try catch里面用了return ,可以理解为只要执行了try或者catch,就一定会执行finally}/** 异常的类型:* System* 参考网页 https://msdn.microsoft.com/zh-cn/library/system(v=vs.80).aspx* AccessViolationException         //在试图读写受保护内存时引发的异常* AppDomainUnloadedException       //在尝试访问已卸载的应用程序域时引发的异常* ApplicationException             //发生非致命应用程序错误时引发的异常* ArgumentException                //在向方法提供的其中一个参数无效时引发的异常* ArgumentNullException            //当将空引用(在 Visual Basic 中为 Nothing)传递给不接受它作为有效参数的方法时引发的异常 * ArgumentOutOfRangeException      //当参数值超出调用的方法所定义的允许取值范围时引发的异常* ArithmeticException              //因算术运算、类型转换或转换操作中的错误而引发的异常* ArrayTypeMismatchException       //当试图在数组中存储类型不正确的元素时引发的异常* BadImageFormatException          //当 DLL 或可执行程序的文件图像无效时引发的异常* CannotUnloadAppDomainException   //卸载应用程序域的尝试失败时引发的异常* ContextMarshalException          //在尝试将对象封送过上下文边界失败时引发的异常* DataMisalignedException          //在从不是数据大小倍数的地址读取数据单元或将数据单元写入此类地址时引发的异常。无法继承此类 * DivideByZeroException            //除数为0异常 * DllNotFoundException             //当未找到在 DLL 导入中指定的 DLL 时所引发的异常* DuplicateWaitObjectException     //当对象在同步对象数组中不止一次出现时引发的异常* EntryPointNotFoundException      //因不存在项方法而导致加载类的尝试失败时引发的异常* Exception                        //表示在应用程序执行期间发生的错误,此类是所有异常的基类。* ExecutionEngineException         //当公共语言运行库的执行引擎中发生内部错误时引发的异常。无法继承此类* FieldAccessException             //当试图非法访问类中的私有字段或受保护字段时引发的异常* FormatException                  //当参数格式不符合调用的方法的参数规范时引发的异常* IndexOutOfRangeException         //试图访问索引超出数组界限的数组元素时引发的异常。无法继承此类 * InsufficientMemoryException      //当检测到没有足够的可用内存时引发的异常。无法继承此类* InvalidCastException             //因无效类型转换或显式转换引发的异常* InvalidOperationException        //当方法调用对于对象的当前状态无效时引发的异常* InvalidProgramException          //当程序包含无效 Microsoft 中间语言 (MSIL) 或元数据时将引发的异常。这通常表示生成程序的编译器中有 bug* MemberAccessException            //访问类成员的尝试失败时引发的异常* MethodAccessException            //非法尝试访问类中的私有方法或受保护的方法时引发的异常* MissingFieldException            //试图动态访问不存在的字段时引发的异常* MissingMemberException           //试图动态访问不存在的类成员时引发的异常* MissingMethodException           //试图动态访问不存在的方法时引发的异常* MulticastNotSupportedException   //尝试组合两个基于 Delegate 类型而非 MulticastDelegate 类型的委托时引发的异常。无法继承此类* NotFiniteNumberException         //当浮点值为正无穷大、负无穷大或非数字 (NaN) 时引发的异常* NotImplementedException          //在无法实现请求的方法或操作时引发的异常* NotSupportedException            //当调用的方法不受支持,或试图读取、查找或写入不支持调用功能的流时引发的异常* NullReferenceException           //尝试取消引用空对象引用时引发的异常 * ObjectDisposedException          //对已释放的对象执行操作时所引发的异常* OperationCanceledException       //取消线程正在执行的操作时在线程中引发的异常* OutOfMemoryException             //没有足够的内存继续执行程序时引发的异常* OverflowException                //在选中的上下文中所进行的算术运算、类型转换或转换操作导致溢出时引发的异常* PlatformNotSupportedException    //当功能未在特定平台上运行时所引发的异常* RankException                    //将维数错误的数组传递给方法时引发的异常* StackOverflowException           //因包含的嵌套方法调用过多而导致执行堆栈溢出时引发的异常。无法继承此类* SystemException                  //为 System 命名空间中的预定义异常定义基类。此类是作为一种方法提供的,该方法用于在系统定义的异常和应用程序定义的异常之间进行区分*                                  //SystemException 不提供导致 Exception 原因的信息。大多数情况下都不应引发此类的实例。如果此类被实例化,则描述该错误的可读消息应传递给构造函数。*                                  //当发生非致命的、可由用户程序恢复的错误时,公共语言运行时引发 SystemException。这些错误是由运行时检查失败引起的(如数组超出界限的错误),*                                  //可以在任何方法的执行过程中发生。SystemException 不向 Exception 添加新功能* TimeoutException                 //给进程或操作分配的时间过期时引发的异常* TypeInitializationException      //作为由类初始值设定项引发的异常周围的包装引发的异常。无法继承此类* TypeLoadException                //类型加载失败发生时引发的异常* TypeUnloadedException            //试图访问已卸载的类时引发的异常* UnauthorizedAccessException      //当操作系统因 I/O 错误或指定类型的安全错误而拒绝访问时所引发的异常* UnhandledExceptionEventArgs      //为以下情况下引发的事件提供数据:存在一个不是由应用程序域处理的异常* UriFormatException               //当检测到无效的统一资源标识符 (URI) 时引发的异常* * System.IO* 参考网页 https://msdn.microsoft.com/zh-cn/library/system.io(v=vs.80).aspx* DirectoryNotFoundException       //当找不到文件或目录的一部分时所引发的异常 * DriveNotFoundException           //当尝试访问的驱动器或共享不可用时引发的异常* EndOfStreamException             //读操作试图超出流的末尾时引发的异常* FileLoadException                //当找到托管程序集却不能加载它时引发的异常 * FileNotFoundException            //试图访问磁盘上不存在的文件失败时引发的异常 * InternalBufferOverflowException  //内部缓冲区溢出时引发的异常* InvalidDataException             //在数据流的格式无效时引发的异常* IOException                      //发生 I/O 错误时引发的异常* PathTooLongException             //当路径名或文件名超过系统定义的最大长度时引发的异常* * System.Data* 参考网页 https://msdn.microsoft.com/zh-cn/library/system.data(v=vs.80).aspx* ConstraintException              //表示在尝试执行违反约束的操作时引发的异常* DataException                    //表示使用 ADO.NET 组件发生错误时引发的异常* DBConcurrencyException           //在插入、更新或删除操作过程中当受影响的行数等于零时由 DataAdapter 引发的异常* DeletedRowInaccessibleException  //表示尝试在已删除的 DataRow 上执行操作时引发的异常* DuplicateNameException           //表示在DataSet相关对象添加操作的过程中,遇到重复的数据库对象名称时引发的异常* EvaluateException                //表示无法计算 DataColumn 的 Expression 属性时引发的异常* InRowChangingEventException      //表示在 RowChanging 事件中调用 EndEdit 方法时引发的异常* InvalidConstraintException       //表示在不正确地尝试创建或访问关系时引发的异常* InvalidExpressionException       //表示在尝试将包含无效 Expression 的 DataColumn 添加到 DataColumnCollection 中时引发的异常* MissingPrimaryKeyException       //表示在尝试访问没有主键的表中的行时引发的异常* NoNullAllowedException           //表示在尝试将空值插入 AllowDBNull 设置为 false 的列中时引发的异常* OperationAbortedException        //当用户中止正在执行的某操作时,将引发此异常* ReadOnlyException                //表示在尝试更改只读列的值时引发的异常* RowNotInTableException           //表示尝试在不位于 DataTable 中的 DataRow 上执行操作时引发的异常* StrongTypingException            //在用户访问 DBNull 值时,强类型 DataSet 引发的异常* SyntaxErrorException             //表示在 DataColumn 的 Expression 属性包含语法错误时引发的异常* TypedDataSetGeneratorException   //在生成强类型 DataSet 时发生名称冲突的情况下引发的异常* VersionNotFoundException         //表示在尝试返回已经删除的 DataRow 版本时引发的异常* * System.Runtime.InteropServices * 参考网页 https://msdn.microsoft.com/zh-cn/library/system.runtime.interopservices(v=vs.80).aspx* COMException                     //当从 COM 方法调用返回无法识别的 HRESULT 时引发的异常* ExternalException                //所有 COM Interop 异常和结构化异常处理 (SEH) 异常的异常基类型* InvalidComObjectException        //当使用无效的 COM 对象时引发的异常* InvalidOleVariantTypeException   //封送拆收器在遇到不能封送到托管代码的 Variant 类型的参数时引发的异常* MarshalDirectiveException        //当封送拆收器遇到它不支持的 MarshalAsAttribute 时引发的异常* SafeArrayRankMismatchException   //当传入的 SAFEARRAY 的秩与托管签名中指定的秩不匹配时引发的异常* SafeArrayTypeMismatchException   //当传入的 SAFEARRAY 的类型与托管签名中指定的类型不匹配时引发的异常* SEHException                     //表示结构化异常处理程序 (SEH) 错误*/}// Update is called once per framevoid Update () {}
}

这篇关于C#学习使用try-catch-finally错误处理表达式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080018

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

Python19 lambda表达式

在 Python 中,lambda 表达式是一个小型匿名函数,通常用于实现简单、单行的函数。lambda 函数可以接受任意数量的参数,但只能有一个表达式。 基本语法: lambda arguments: expression 这里,arguments 是传递给 lambda 的参数,expression 是关于这些参数的表达式,它的计算结果就是 lambda 函数的返回值。 使用

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

C# 中变量未赋值能用吗,各种类型的初始值是什么

对于一个局部变量,如果未赋值,是不能使用的 对于属性,未赋值,也能使用有系统默认值,默认值如下: 对于 int 类型,默认值是 0;对于 int? 类型,默认值是 null;对于 bool 类型,默认值是 false;对于 bool? 类型,默认值是 null;对于 string 类型,默认值是 null;对于 string? 类型,哈哈,没有这种写法,会出错;对于 DateTime 类型,默

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

java8的新特性之一(Java Lambda表达式)

1:Java8的新特性 Lambda 表达式: 允许以更简洁的方式表示匿名函数(或称为闭包)。可以将Lambda表达式作为参数传递给方法或赋值给函数式接口类型的变量。 Stream API: 提供了一种处理集合数据的流式处理方式,支持函数式编程风格。 允许以声明性方式处理数据集合(如List、Set等)。提供了一系列操作,如map、filter、reduce等,以支持复杂的查询和转