try catch和finally

在C#中这三个关键字用于处理异常。

这三个关键字try是必定要用的,要不然就失去了意义。然后catch和finally可以不用但是要注意遵循原则。

存在一个或多个catch的时可以不用finally,也可以用。

不存在catch时,必须要用finally

  • try代码块主要包括出错的代码
  • catch是处理异常的代码
  • finally是处理异常之后要做的事情

 try  

      {  

          //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 

     }  

   catch //(Exception e)  括号里面的参数是表示的这个catch语句里面要对应处理的错误类型及其参数

   {          

        //throw new Exception("转化失败");  

        //除非try里面执行代码发生了异常,否则这里的代码不会执行

    }  

   finally  

  {  

       //处理异常之后要做的事情

       //不管什么情况都会执行,包括try catch里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally

   }  

try-catch语句的两种书写形式

第一种:try{ 可能出错的程序 }  catch{ 出错后的处理方法}

   

 有运行结果可以看出 当输入的数字为整数比如“3”时程序没有出错所以执行Console.WriteLine("你输入的是" + i);这句话 输出了“你输入的是3”。 但当输入的是小数或是字母比如“3.2”“h”时 出现了错误 那么程序就跳转到catch中执行Console.WriteLine("你输入的字符格式有误"); 输出 “你输入的字符有误”。

 第二种:try{ 可能出现错误的程序 }  catch(可能出错的地方){出错的处理方法}

由上面的结果可以看出:当输入整数“3”时 程序正常执行,但当输入“3.2”“h”时程序不能把他们转化成整数 那么(Exception e)就捕获错误信息并在catch“{}”中进行错误的处理。

关于throw的用法可以用这么个例子来简单解释一下:

     A类里面有一个a方法,B类里面有一个b方法,那么我们现在在a方法中调用B类的b方法,但是由于某些原因,b方法有时候会出现一些错误,但是我们不想在b里面处理这个错误,那么我们再b里面可以写一个判断语句

     if(错误的标识出现了)

     {

         throw new IndexOutOfRangeException();//这里的错误类型有很多在后面列出来了,

     }

     然后再程序a中我们可以写一个catch语句来截获这个错误,并作出相应的处理

     Catch(IndexOutOfRangeExceptione)

    {

         MessageBox.Show(“发现IndexOutOfRangeException的错误”);//也可以有其他的处理方式,处理这种提醒式的处理,也可以继续抛出错误,让上一层来处理

     }

错误的种类:

算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
方法未找到异常:NoSuchMethodException

关于throw和throws

throw 是语句抛出一个异常;throws是方法抛出一个异常;

throw语法:throw <异常对象>

throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]
其中:异常类可以声明多个,用逗号分割。

  • 只要try开始执行了,finally一定会执行.
  • 捕捉到的异常可以重新抛出 ,  re-throwable
  • Try后不一定要有catch块,但是一旦用了try关键字,后边必须有catch或者finally块,或者二者都有

更多的关于try----catch的用法请转:http://msdn.microsoft.com/zh-cn/library/0yd65esw

时间: 2024-10-11 18:10:24

try catch和finally的相关文章

Catch Application Exceptions in a Windows Forms Application

You need to handle the System.Windows.Forms.Application.ThreadException event for Windows Forms. This article really helped me: http://bytes.com/forum/thread236199.html. Application.ThreadException += new ThreadExceptionEventHandler(MyCommonException

try~Catch语句中异常的处理过程

[2014/10/12 21:40]文章待续~ 1.函数自身捕获处理异常的情况 下面的例子介绍了try~catch语句中出现异常时语句的执行顺序: package month10; import java.lang.*; public class TryCatch{ /* * 函数产生一个ArithmeticException异常 */ public static void First(){ System.out.println("第一个异常处理的例子"); try{ //double

android在程序崩溃时Catch异常并处理

Android系统的"程序异常退出",给应用的用户体验造成不良影响.为了捕获应用运行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理.通过Thread.setDefaultUncaughtExceptionHandler()方法将异常处理类设置到线程上即可. 写一个例子来理解. 1.新建项目,新建一个MyCatchException类,实现uncaughtExceptionHandler. //全部错误捕捉器 public class MyCatc

有return的情况下try catch finally的执行顺序

http://www.cnblogs.com/lanxuezaipiao/p/3440471.html?cm_mc_uid=89442383850615035911861&cm_mc_sid_50200000=1505491196 1.不管有木有出现异常,finally块中代码都会执行:2.当try和catch中有return时,finally仍然会执行:3.finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么

[[email&#160;protected]] Omit catch error block if not needed

From [email protected], you can omit catch error block. Before: try { throw new Error('whatever'); } catch(err) { console.log(err) } Now: try { throw new Error('whatever'); } catch { console.log("error happened") } It is just a syntax sugar, if

Catch That Cow(广搜)

个人心得:其实有关搜素或者地图啥的都可以用广搜,但要注意标志物不然会变得很复杂,想这题,忘记了标志,结果内存超时: 将每个动作扔入队列,但要注意如何更简便,更节省时间,空间 Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and t

poj 1703 Find them, Catch them

Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 46119   Accepted: 14193 Description The police office in Tadu City decides to say ends to the chaos, as launch actions to root up the TWO gangs in the city, Gang Drago

coverity&amp;fortify1--Poor Error Handling: Overly Broad Catch

1.描述: 多个 catch 块看上去既难看又繁琐,但使用一个"简约"的 catch 块捕获高级别的异常类(如 Exception),可能会混淆那些需要特殊处理的异常,或是捕获了不应在程序中这一点捕获的异常.本质上,捕获范围过大的异常与"Java 分类定义异常"这一目的是相违背的. 2.风险: 随着程序的增加而抛出新异常时,这种做法会十分危险.而新发生的异常类型也不会被注意到. 3.例子: try{ //IOoperation // } catch(Exceptio

bfs hdu 2717 Catch That Cow

Catch That Cow Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14553    Accepted Submission(s): 4422 Problem Description Farmer John has been informed of the location of a fugitive cow and wants

hdu 2717 Catch That Cow

---恢复内容开始--- Catch That Cow Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14433    Accepted Submission(s): 4396 Problem Description Farmer John has been informed of the location of a fugitive