c# 指定的异常情况处理 finally 的用法
2个回答
展开全部
try里面是执行代码,其中的代码"可能"产生异常.
catch是对产生异常后的处理代码,可以抛出异常,也可以显示异常,也可以弹出某中提示,总之catch里是任何代码都行,如果你知道这钟异常产生的原因,可以打印此原因,也可以对此原因进行相应的处理,同时可以为多个catch,每个catch(异常类型) 用多个catch来捕获多种异常,也可以用所有异常的父类来捕获(这样就不用写多个catchl了).
假如try中产生了异常,那么try从产生异常开始到try结束的这段代码将不会执行,转而去执行catch.
finally是try执行完后执行(没发生异常)或者在catch后执行(发生了异常),也就是说finally无论怎么样,都会执行.
3个连起来就像平时口语中的 "(try)假如^^^^^^,(catch)就^^^^^^^^^,(finally)最后^^^^^^^^^^
使用try...catch语法结构如下:
try
{
//程序代码
}
catch(Exception e)
{
//错误代码处理
}
异常处理的语法:try{有可能产生错误的代码}catch(异常处理声明(声明此catch区段要捕获哪一种类型的异常错误,可以不用声明,这样子便会让catch去捕获任意类型的异常错误)){异常处理程序代码(当catch捕获到异常错误后,所采取对应的程序代码)}注意:利用catch来捕获try-catch中产生的异常错误,可以建立多个catch区段以捕获不同类型的异常错误。
一个除数和零的简单例子:
using System;
public class DivisorIsZero
{
private static void Main()
{
int dividend = 10;
int divisor1 = 0;
int divisor2 = 5;
int DivideValue;
int DivideValue2;
try
{
Console.WriteLine("10/5=",10/5);
DivideValue = dividend / divisor1; //(1)
DivideValue2=dividend/divisor2; //(2)
Console.WriteLine("我这里不会发生异常,我可以正常显示,我的值为{0}", DivideValue2);
//(3)这一行将不会被执行。
}
catch(Exception e)
{
Console.WriteLine("传递过来的异常值为:{0}", e);
}
finally
{
Console.WriteLine("无论是否发生异常,我都会显示。");
}
}
}
注:(1)行被执行则会抛出一个异常,如果没有catch语句,程序会异常终止,使用不带参数的catch子句,则可以捕获任意类型的异常。
如果将(1)行和上面的相关变量声明注释掉,启用(2)行,这意味该程序运行时不会出现异常,从输出可知,finally代码块仍将被执行。
using System;
public class DivisorIsZero
{
private static void Main()
{
int dividend = 10;
//int divisor1 = 0;
int divisor2 = 5;
//int DivideValue;
int DivideValue2;
try
{
//DivideValue = dividend / divisor1; //(1)
DivideValue2=dividend/divisor2; //(2)
Console.WriteLine("我这里不会发生异常,我可以正常显示,我的值为{0}", DivideValue2);
//(3)这一行将被会正常执行。
}
catch(Exception e)
{
Console.WriteLine("传递过来的异常值为:{0}", e);
}
finally
{
Console.WriteLine("无论是否发生异常,我都会显示。");
}
}
}
我们再更改一下上面的例子:
如果去掉上面的try...catch语句,直接编写程序,结果会怎样呢?
using System;
public class DivisorIsZero
{
private static void Main()
{
int dividend = 10;
int divisor1 = 0;
int DivideValue;
DivideValue = dividend / divisor1;
}
}
执行后发现,提示未处理异常,试图除以零的错误信息。
对比前后的结果可以发现,前面的代码由于进行了异常处理,程序不会中断执行,而是将异常作为程序的一部分来执行。后面的代码没有进行异常处理,导致代码执行期间遇到异常时,终止程序执行,提示错误信息。
catch是对产生异常后的处理代码,可以抛出异常,也可以显示异常,也可以弹出某中提示,总之catch里是任何代码都行,如果你知道这钟异常产生的原因,可以打印此原因,也可以对此原因进行相应的处理,同时可以为多个catch,每个catch(异常类型) 用多个catch来捕获多种异常,也可以用所有异常的父类来捕获(这样就不用写多个catchl了).
假如try中产生了异常,那么try从产生异常开始到try结束的这段代码将不会执行,转而去执行catch.
finally是try执行完后执行(没发生异常)或者在catch后执行(发生了异常),也就是说finally无论怎么样,都会执行.
3个连起来就像平时口语中的 "(try)假如^^^^^^,(catch)就^^^^^^^^^,(finally)最后^^^^^^^^^^
使用try...catch语法结构如下:
try
{
//程序代码
}
catch(Exception e)
{
//错误代码处理
}
异常处理的语法:try{有可能产生错误的代码}catch(异常处理声明(声明此catch区段要捕获哪一种类型的异常错误,可以不用声明,这样子便会让catch去捕获任意类型的异常错误)){异常处理程序代码(当catch捕获到异常错误后,所采取对应的程序代码)}注意:利用catch来捕获try-catch中产生的异常错误,可以建立多个catch区段以捕获不同类型的异常错误。
一个除数和零的简单例子:
using System;
public class DivisorIsZero
{
private static void Main()
{
int dividend = 10;
int divisor1 = 0;
int divisor2 = 5;
int DivideValue;
int DivideValue2;
try
{
Console.WriteLine("10/5=",10/5);
DivideValue = dividend / divisor1; //(1)
DivideValue2=dividend/divisor2; //(2)
Console.WriteLine("我这里不会发生异常,我可以正常显示,我的值为{0}", DivideValue2);
//(3)这一行将不会被执行。
}
catch(Exception e)
{
Console.WriteLine("传递过来的异常值为:{0}", e);
}
finally
{
Console.WriteLine("无论是否发生异常,我都会显示。");
}
}
}
注:(1)行被执行则会抛出一个异常,如果没有catch语句,程序会异常终止,使用不带参数的catch子句,则可以捕获任意类型的异常。
如果将(1)行和上面的相关变量声明注释掉,启用(2)行,这意味该程序运行时不会出现异常,从输出可知,finally代码块仍将被执行。
using System;
public class DivisorIsZero
{
private static void Main()
{
int dividend = 10;
//int divisor1 = 0;
int divisor2 = 5;
//int DivideValue;
int DivideValue2;
try
{
//DivideValue = dividend / divisor1; //(1)
DivideValue2=dividend/divisor2; //(2)
Console.WriteLine("我这里不会发生异常,我可以正常显示,我的值为{0}", DivideValue2);
//(3)这一行将被会正常执行。
}
catch(Exception e)
{
Console.WriteLine("传递过来的异常值为:{0}", e);
}
finally
{
Console.WriteLine("无论是否发生异常,我都会显示。");
}
}
}
我们再更改一下上面的例子:
如果去掉上面的try...catch语句,直接编写程序,结果会怎样呢?
using System;
public class DivisorIsZero
{
private static void Main()
{
int dividend = 10;
int divisor1 = 0;
int DivideValue;
DivideValue = dividend / divisor1;
}
}
执行后发现,提示未处理异常,试图除以零的错误信息。
对比前后的结果可以发现,前面的代码由于进行了异常处理,程序不会中断执行,而是将异常作为程序的一部分来执行。后面的代码没有进行异常处理,导致代码执行期间遇到异常时,终止程序执行,提示错误信息。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询