黑马程序员技术交流社区
标题:
try catch
[打印本页]
作者:
何荣智
时间:
2011-10-29 12:12
标题:
try catch
有谁能具体讲一下 这个的用法啊 最好是有代码的啊
作者:
黄朝辉
时间:
2011-10-29 13:44
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string a = Console.ReadLine();
try
{
int b = int.Parse(a);
}
catch
{
Console.WriteLine("a不是整型");
}
finally
{
Console.WriteLine("不管成功失败都显示");
}
}
}
}
复制代码
作者:
陈涛
时间:
2011-10-29 16:34
本帖最后由 陈涛 于 2011-10-29 16:38 编辑
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 数字相加
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//try
//{
// int sum=0;
// int str1 = Convert.ToInt32(textBox1.Text);
// int str2 = Convert.ToInt32(textBox2.Text);
// if (str1 > str2)
// {
// MessageBox.Show("输入的第一个数字必须小于第二个数字!");
// return;
// }
// for (;str1 <=str2; str1++)
// {
// sum += str1;
// }
// label4.Text = sum.ToString() ;
//}
//catch (Exception)
//{
// MessageBox.Show("请输入正确的数字!");
//}
string str1 = textBox1.Text;
string str2 = textBox2.Text;
int sum = 0;
int i1,i2;
if (!int.TryParse(str1, out i1))
{
MessageBox.Show("第一个数不是整数!");
return;
}
if (!int.TryParse(str2, out i2))
{
MessageBox.Show("第二个数不是整数!");
return;
}
if (i1 > i2)
{
MessageBox.Show("输入的第一个数字必须小于第二个数字!");
return;
}
for (; i1 <= i2; i1++)
{
sum += i1;
if (sum == 2)
{
sum = 0;
}
sum+= i1;
}
label4.Text = sum.ToString();
}
}
}
复制代码
这个是那个计算1到100的和, 打了注释的部分用到try catch
try { //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 }
catch { //除非try里面执行代码发生了异常,否则这里的代码不会执行 }
finally { //不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally }
作者:
张冬冬
时间:
2011-10-29 22:05
上面的代码已经说的很清楚了,我就针对你的提问说下try{}catch吧。
try{}catch的组合用法,是在一个类跑出异常之后,捕获这个异常通常用的办法。
什么样的时候用try{}catch的组合呢,是在一个类抛出异常之后,所有的类又无法处理的时候,这时候一味的像外抛出,
也不会有什么意义,所以对异常进行捕获处理。
作者:
10642491
时间:
2011-10-30 07:23
楼上各位说的都特别好,不过好像另一个问题又出现了,到底什么时候应该捕获异常,什么时候应该抛出异常呢?在C#有没有像java那样把异常作为函数的返回值的?
作者:
章坚
时间:
2011-11-1 14:20
public int Fill(string sql, DataSet dataset, IDataParameter[] param,bool isStoredProcedure)
{
try
{
if (DBConnector.Connection.State == ConnectionState.Closed)
{
DBConnector.Connection.Open();
}
IDbCommand cmd = DBConnector.GetCommand(sql, param);
//是否是事务
if (isTranscation)
{
cmd.Transaction = transaction;
}
//是否是存储过程
if (isStoredProcedure)
{
cmd.CommandType = CommandType.StoredProcedure;
}
IDbDataAdapter adapter = GetAdapter(cmd);
return adapter.Fill(dataset);
}
catch (Exception e)
{
Log.Error(e.Message);
throw e;
}
finally
{
if (!isTranscation)
{
DBConnector.Connection.Close();
}
}
}
一般情况都是在数据库连接,进行查询以及相关操作时使用;或者在进行类型转换中使用,以及一些复杂逻辑中进行使用,以捕捉异常,处理发生错误问题时,更好更快的找出问题得以解决。
作者:
沙铁健
时间:
2011-11-1 21:57
try{}catch finally在try里执行出错就会跳入catch块里去 这里你可以捕捉异常,finally是不论什么情况都会执行 就想你一般写连接数据库最后 要关闭connection.close() 不过我一般用using catch ^_^
作者:
朱勋
时间:
2011-11-2 09:10
学习了,具体什么情况下抛出异常要根据你编写的程序来定,但是有些情况下是必须有的,比如,在数据库连接、操作等方面。
作者:
宋天琪
时间:
2011-11-4 21:23
try里边写代码,把可能出现错误的代码都放try里边,catch用于捕获异常。。。
作者:
张大福
时间:
2011-12-13 21:44
try 语句1 catch 语句2 等价于 if(语句1有错误) 语句2
看形式,try-catch简直是多余的,但是它还是有意义的。因为 if(语句1有错误) 中的条件很难用一个表达式表达出来,用try-catch则非常方便。
比如:一个字符串能转换成整型,就将这个字符串转换成整型并打印输出;如果不能转换,则打印“此字符串不能转换成整型”。如果用if-else,if中的条件应该怎么表达呢?我想大家很难想到吧。但是用try-catch则非常方便,不必为条件而浪费时间了。这就是try-catch的好处。
作者:
贾宁
时间:
2011-12-16 09:15
Console.WriteLine("请输入一个数字:");
int number = 0;
bool isnumber = false;
while(isnumber==false)
{
try
{
number = Convert.ToInt32(Console.ReadLine());
isnumber = true;
}
catch
{
Console.WriteLine("您输入的不是数字,请重新输入、、");
isnumber = false;
}
}
for (int i = 0; i < number + 1; i++)
{
Console.WriteLine("{0}+{1}={2}",i,number-i,number);
}
Console.ReadKey();
由于用户输入的内容将会被作为字符串处理,需要将其转换成整型,当输入的不是数字时,将捕获异常,程序将跳过try{},直接执行catch{}中内容
作者:
刘波
时间:
2011-12-19 14:27
try
{
//可能会发生异常的代码
}
catch(Exception e)
{
//这里你可以处理,比如弹出对话框告诉用户,或者把这个异常的情况(e)发邮件到你的邮箱,反正你想怎么处理就怎么处理。
//如果不处理就抛出,待下次调用这个方法时来处理throw ....
}
finally
{
//不管有没有异常都会执行这里的代码
}
希望对你有帮助
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2