A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马谦 中级黑马   /  2013-3-10 18:10  /  2406 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.                         using (SqlConnection con = new SqlConnection(StrConString))
  2.                         {
  3.                                 try
  4.                                 {
  5.                                         con.Open();
  6.                                 }
  7.                                 catch(Exception e )
  8.                                 {
  9.                                         MessageBox.Show ("数据库连接出错!/t" + e.Message);
  10.                                 }
  11.                                 using (SqlCommand cmd = new SqlCommand(StrSql ,con) )
  12.                                 {
  13.                                      foreach (SqlParameter s in parameters )
  14.                                          {
  15.                                                  cmd.Parameters.Add(s);
  16.                                          }
  17.                                          return cmd.ExecuteNonQuery();
  18.                                 }
  19.                         }
复制代码
这样对不对啊,con.Open();出错之后为什么还会执行后面的代码?

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

7 个回复

倒序浏览
因为你捕获了异常,并对异常做了处理。
要想出错之后后面的代码不执行了,可以试下自学视频中讲的 throw new RuntimeException();
将异常抛出后,程序将会终止。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 孔健 于 2013-3-10 18:51 编辑

try...catch是一种异常捕获机制.  
原理是:try中放很有可能出错的代码,当程序运行出现错误时,程序会立即跳入catch中,对错误进行相应的处理.这样,在try中出现错误代码之后 的代码不会再被执行,程序继续向下执行.
格式:
           try
           {
                有可能出现错误的代码;
           }
           catch
           {
                错误处理代码;
           }

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
1、catch是捕获异常,抛出异常,当try语句块中的代码出现异常时,catch立马捕获异常,提示异常。
           try
   {   
                                          可能会出现异常的代码
}
                              catch(Exception  ex)
{
                                      Console.WriteLine(ex);
}
                finally
{
                                                                                                             当出现异常时一定回执行的代码,相当于是对出现异常的紧急处理手段
}
   2、catch也可以充的finally的部分作用,当try语句块的代码出现异常可以在catch语句块中编写处理代码。
            try
                                                              {      Console.WriteLine("请输入一个整数值");
                                                                              int  num=Convert.ToInt32(Console.ReadLine());
}
                   catch
{
                                                                                     Console.WriteLine("您输入的不是数字,请重新输入");
}

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 马谦 于 2013-3-10 22:38 编辑
曾钦 发表于 2013-3-10 18:15
因为你捕获了异常,并对异常做了处理。
要想出错之后后面的代码不执行了,可以试下自学视频中讲的 throw ne ...

C#中的Try Cath  和vb.net中的不一样吗?
  1.         Using con As New SqlConnection(Strsqlcon)
  2.             Try
  3.                 con.Open()
  4.             Catch SS As SqlException
  5.                 MsgBox("错误编号:" & SS.Number & vbCrLf & "错误信息:" & SS.Message)
  6.                 ExeNone = False
  7.                 Return Nothing
  8.             Catch S As Exception
  9.                 MsgBox("错误信息:" & S.Message)
  10.                 ExeNone = False
  11.                 Return Nothing
  12.             End Try
  13.             Using cmd As New SqlCommand(StrSql, con)
  14.                 For Each SqlParameter In Pra
  15.                     cmd.Parameters.Add(SqlParameter)
  16.                 Next
  17.                 cmd.ExecuteNonQuery()
  18.             End Using
  19.         End Using
复制代码
vb.net这样写,如果数据库连接出错以后就不会执行后面的代码了。我想要的是,错处之后跳出这个过程而不是让程序停止运行

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
马谦 发表于 2013-3-10 22:35
C#中的Try Cath  和vb.net中的不一样吗?vb.net这样写,如果数据库连接出错以后就不会执行后面的代码了。 ...

额,突然发现哥们是.net的问题,用java写的话我会用if 判断下是否数据库连接成功,成功再执行相应的代码,不成功就执行其它代码,程序也不会终止。。。至于.net 怎么弄,额,爱莫能助了。。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报

因为你捕获了异常,并对异常做了处理。想要他不执行下面直接return掉。。。用法和你现在用的一样,会出现异常的地方就把他包起来,不过建议少用他,耗资源。。。。
回复 使用道具 举报
宋健 中级黑马 2013-3-11 20:32:44
8#
string input = "";
            int number = 0;
            while (input != "q")
            {
                Console.WriteLine("请输入一个数字,输入q退出程序");
                input = Console.ReadLine();
                if (input != "q")
                {
                    try
                    {
                        number = Convert.ToInt32(input);
                        Console.WriteLine("这个数的2倍是{0}", number * 2);
                    }
                    catch
                    {
                        Console.WriteLine("输入有误,请重新输入");
                    }
                }
                else
                {
                    Console.WriteLine("输入q退出程序");
                }
            }
            Console.WriteLine("程序退出");
            Console.ReadKey();

你可以看看这段程序的运行结果,try-catch就是用来捕捉异常的,简单的说,就是在可能出现异常的地方用try-catch报出异常
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马