这样理解: "(try)假如xx,(catch)就xxx,(finally)最后xxxx
简单例子:
using System;
public class chushu
{
private static void Main()
{
int number1=100;
int number2= 0;
int number3= 10;
try
{
Console.WriteLine("100/10=",number1/number3);//(2)
Console.WriteLine("我这里不会发生异常,我可以正常显示");
Console.WriteLine("我这里会发生异常,我可以不能正常显示");//(1)
Console.WriteLine("10/0=",number3/number2);
}
catch(Exception e)
{
Console.WriteLine("传递过来的异常值为{0}",e);
}
finally
{
Console.WriteLine("无论是否发生异常,我都会显示。");
}
}
}
注:(1)行被执行则会抛出一个异常,如果没有catch语句,程序会异常终止,使用不带参数的catch子句,则可以捕获任意类型的异常。
如果将(1)行和上面的相关变量声明注释掉,启用(2)行,这意味该程序运行时不会出现异常,从输出可知,finally代码块仍将被执行。
我们再更改一下上面的例子:
如果去掉上面的try...catch语句,直接编写程序,结果会怎样呢?
using System;
public class DivisorIsZero
{
private static void Main()
{
int number1=100;
int number2= 0;
int number3= 10;
Console.WriteLine("100/10=",number1/number3);//(2)
Console.WriteLine("我这里不会发生异常,我可以正常显示");
Console.WriteLine("我这里会发生异常,我可以不能正常显示");//(1)
Console.WriteLine("10/0=",number3/number2);
}
}