unity学习之异常,修饰符

欢迎来到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); 
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值