为什么代码里要用try…catch…语句?这是个问题。
通俗讲:就是给代码里面可能出现的不安全代码加了个保险。即使出错了,也不会停止,可以继续执行。
可能出现异常的代码,不用try catch的情况:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TryCatchTest
{
class Program
{
static void Main(string[] args)
{
//*********************************不使用try...catch...的情况**********************************************************
Console.WriteLine("请输入一个整数:");
int aa = int.Parse(Console.ReadLine());//这里输入的类型必须是整数,否则会报异常
Console.WriteLine("上面的执行没有问题。");
Console.ReadKey();
}
}
}
上面的代码。如果输入的是一个整数,就正常往下执行,执行后面的输出语句。
上面的代码。如果输入的不是一个整数,就报异常!!!!!!
按Enter后:
接下来我们来看,这段代码里使用try…catch…之后有什么好处。。。。。。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TryCatchTest
{
class Program
{
static void Main(string[] args)
{
//*********************************使用try...catch...的情况**********************************************************
try
{
Console.WriteLine("请输入一个整数");
int a = int.Parse(Console.ReadLine()); //如果是正确的输入,就在try里面继续执行,否则就跳到catch里面执行
Console.WriteLine("上面的执行没有问题。");
}
catch //try中有异常的时候执行
{
Console.WriteLine("try块里面出现了异常!");
}
//finally//不管上面有没有错,都需要执行!
//{
// Console.WriteLine("谢谢使用,再见!");
//}
Console.ReadKey();
}
}
}
运行结果:
输入一个非整数后: try里面不报异常了,但是也不再执行try块里面的内容,而是去执行catch里的内容!
再来看下使用finally之后的情况:(去掉finally代码块的注释。。。。。。)
执行完catch里面的内容之后,对整个内容做一个了断。无论怎样都执行。
最后的最后,来看下在catch里面捕捉一下try里面出现的异常的详细内容,便于判断代码哪里出问题了,好顺藤摸瓜,解决问题。。。。。。。。。。。。。。。
这样我们就知道了是不安全代码到底不安全在哪里了。。。。。。。
综上,使用try…catch…有两个好处:
1、出现异常程序可以不报错,继续执行。。
2、可以捕获出现的异常,方便知道代码的哪里出现了问题,便于查看解决问题。。。。