unity学习之异常,修饰符

本文详细介绍了C#中的常量与只读字段的区别,以及C#异常处理的关键概念,包括try、catch、finally等关键字的使用方法,并通过实例说明了如何在catch块中重新抛出异常。

欢迎来到unity学习教育专区,这里有丰富的unity资源,相信一定可以给你带来收获

常量

     使用 const 关键字来声明某个常量字段或常量局部变量。 常量字段和常量局部变量不是变量并且不能修改。 

     常量可以为数字、布尔值、字符串或 null 引用。 不要创建常量来表示你需要随时更改的信息。

 

       const float PI=3.14f;

       PI=3.2f;//错误


       常量一般都大写,也可以用静态来修饰,调用时可以直接用类名.常量的形式来用。

 

只读字段

       当字段声明中包括readonly修饰符时,该字段成为只读字段。只能在声明只读字段的同时赋初值。其他任何时候都不允许为只读字段赋值。

       如果在类定义中显式添加一个构造函数,可以在构造函数中改变只读字段的值。


      常量:定义时,必须给常量赋值,不能再次赋值;

      只读字段:定义时,必须给只读字段赋值,可以在构造函数内再次赋值(只能在构造函数内)。

 

修饰符

         C#共有五种访问修饰符:publicprivateprotectedinternalprotected internal

                

                 访问范围由大到小:public--protected internal--internal--protected--private

异常

      1、C# 语言的异常处理功能可帮助您处理程序运行时出现的任何意外或异常情况。 

      2、异常处理使用 trycatch 和 finally 关键字尝试某些操作,以处理失败情况,尽管这些操作有可能失败,但如果您确定需要这样做,且希望在事后清理资源,就可以尝试这样做。 

      3、异常是使用 throw 关键字创建的。

 

   异常(try...catch)

        对于给定的 try 子句,可以有一个以上的 catch 子句,每个 catch 捕捉不同的异常类型。导出类型必须始终列在任何基类型之前。

 

   异常(throw)

                 throw语句用于发出在程序执行期间出现异常情况的信号。

                 格式:throw  表达式;

                 (1)其中表达式必须表示一个Exception类或他的派生类型,也可以在throw语句后没有表达式,表示将异常再次抛出

            (2)如果使用throw抛出异常,没有相应的catch捕获异常,出现异常时会中断程序运行。

            (3)使用throw语出抛出异常时,尽量不出抛出基类异常。因为基类异常对象包含的错误很多,无法判断是发生了什么类型的异常。

            

   异常(finally)

        finally 构造用于指定即使发生异常也始终会运行的代码。finally 通常用于清理发生异常时所产生的内容。如果没有finally,这一级的资源就不好释放了

 

  异常(Exception)

        当不确定有什么异常时,可以直接用Exception

 

异常具有以下特点:

       1、各种类型的异常最终都是由System.Exception 派生而来。

       2、在可能引发异常的语句周围使用 try 块。

       3、一旦 try 块中发生异常,控制流将跳转到第一个关联的异常处理程序在 C# 中,catch 关键字用于定义异常处理程序。

       4、程序可以使用 throw 关键字显式地引发异常。

       5、即使发生异常也会执行 finally 块中的代码。 使用 finally 块释放资源,例如,关闭在 try 块中打开的任何流或文件。

 

c#描述异常处理语句try、catch、finally执行时的相互关系

         (1)try里面是执行代码,其中的代码"可能"产生异常. 

         (2)catch是对产生异常后的处理代码,可以抛出异常,也可以显示异常,也可以弹出某中提示,总之catch里是任何代码都行,如果你知道这钟异常产生的原因,可以打印此原因,也可以对此原因进行相应的处理,同时可以为多个catch,每个                  catch(异常类型) 用多个catch来捕获多种异常,也可以用所有异常的父类来捕获(这样就不用写多个catchl了). 假如try中产生了异常,那么try从产生异常开始到try结束的这段代码将不会执行,转而去执行catch. 

         (3)finally是try执行完后执行(没发生异常)或者在catch后执行(发生了异常),也就是说finally无论怎么样,都会执行. 

 3个连起来就好像口语中的(try)假如。。。(catch)就。。。(finally)最后。。。这样比较好记。

在catch块中throw new exception(string,exception)有什么意义?解决方案

www.MyException.Cn  网友分享于:2013-02-03  浏览:31次
在catch块中throw new exception(string,exception)有什么意义?
如题

------解决方案--------------------
throw new exception(string,exception) 

throw是明确地抛出异常 

MSDN: 
Exception (String, Exception) 使用指定错误信息和对作为此异常原因的内部异常的引用来初始化 Exception 类的新实例。 
------解决方案--------------------
如果要现实: 

在发现异常以后作一下记录异常信息然后在抛出异常,让客户知道有问题了,以便通知技术人员。 

你见到的那种方式就有必要了,因为程序异常以后就崩溃的机会很大,先记录问题下来再崩溃才行。 
------解决方案--------------------
捕获异常以后,再抛出一个新的异常。 
再抛出新异常之前,你可以对前面捕获的异常做一些操作,比如记录日志、获取异常信息然后写到新异常中 
------解决方案--------------------
我认为catch块里通常对附异常有三种办法 
一种办法是,什么也不做,catch语句里只有空语句 
另一种办法是,用messagebox之类的通知异常 
还有一种办法是,throw 一个new的异常。 
用哪种办法取决于你希望如何处理这个异常。 
如果你想直接通知用户,用messagebox之类的就好了 
如果你想由调用这个函数的程序来处理,可以throw一个new 
如果你希望你的程序出了“这个”异常还正常运行,就像什么也没发生一样,你可以空语句。 
总之try catch是有意义和必要的,但你的程序如何catch就是你自己的想法喽。 
------解决方案--------------------
int num = Convert.ToInt32(textBox1.Text); 

try 

if (num == 0) 

throw new ArgumentNullException( "出现零! "); // 引发第一种错误,至于错误类型,C#有许多你查一下。 

if (num == 1) 

throw new Exception( "出现壹! "); // 引发第二种错误。 


catch (ArgumentNullException ex) // 处理第一种错误,你看ArgumentNullException是不是和上面批配?

MessageBox.Show(ex.Message); 

catch (Exception ex) // 处理第二种错误。 

MessageBox.Show(ex.Message); 
}

      本套C#语言教程,全部采用案例化教学模式。结合C#知识点在实际游戏中具体的应用场景,让初级学员快速、深入的学好C#语言,为进一步全面、高效的学习Unity游戏引擎,制作精良的游戏产品,打下坚实的语言基础!       真正学好Unity,其先决条件是一定要有稳固、扎实的编程基础!因此目前绝大多数(线下)Unity培训机构(一般4-5个月)都会先给学员讲解C# for Unity 的编程加强课程。(一般高校的编程课程内容少、不深入...)        本套《C# for Unity》课程共分为“入门篇”、“基础篇”、“中级篇”、“进阶篇”,分别对应于完全“零”编程基础、较少编程基础、需要强化C#编程、需要深入学习C#脚本,等各类型学员群体。      说明:  本课程使用Virtual Studio2012,以及Unity5.2 进行开发与讲解。(学员使用更高版本,对学习影响不大) 一、热更新系列(技术含量:中高级):A:《lua热更新技术中级篇》https://edu.youkuaiyun.com/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.youkuaiyun.com/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.youkuaiyun.com/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.youkuaiyun.com/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.youkuaiyun.com/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.youkuaiyun.com/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.youkuaiyun.com/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.youkuaiyun.com/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.youkuaiyun.com/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.youkuaiyun.com/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门篇》https://edu.youkuaiyun.com/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.youkuaiyun.com/course/detail/4595C: 《C# For Unity系列之中级篇》https://edu.youkuaiyun.com/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.youkuaiyun.com/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.youkuaiyun.com/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.youkuaiyun.com/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.youkuaiyun.com/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.youkuaiyun.com/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.youkuaiyun.com/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.youkuaiyun.com/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.youkuaiyun.com/course/detail/24979
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值