黑马程序员技术交流社区
标题:
开发中catch里头的Exception问题
[打印本页]
作者:
﹏゛心被伱牵
时间:
2012-10-22 10:04
标题:
开发中catch里头的Exception问题
开发中catch里头的Exception问题,比如我们不知道发生什么异常,我们直接扑捉Exception这个大异常,还是根据程序运行错误,根据错误的结果来扑捉这个已经出现的异常了?求解各位是怎么写这个的
作者:
陆建平
时间:
2012-10-22 11:31
小程序的话,抛的异常就可以了,如果你要查什么异常,可以到aip中查找
作者:
陈琦
时间:
2012-10-22 12:58
个人感觉:异常是越细越好,这样就能知道到底是哪里出了问题,对于程序的修正有很大的帮助
作者:
孙岳
时间:
2012-10-22 13:34
需要捕捉异常的部分都能在API中查到,用的多了自然就知道是什么异常了,常用的也就那几个,而且用eclipse的话,会提示,不用手动敲的。
作者:
chens2865
时间:
2012-10-22 17:44
楼上的正解;异常越细越能知道问题出现在哪些地方;另外,在做数据转换的时候务必考虑转换失败抛异常的情况。用try...catch来检查:
public static int MyTryParse(string str)
{
int num = 0;
while (true)
{
try
{
num = int.Parse(str);
return num;
}
catch
{
Console.WriteLine("你输入的格式不对,请重新输入");
str = Console.ReadLine();
}
}
}
作者:
草上飞
时间:
2012-10-23 20:00
在发现异常以后作一下记录异常信息然后在抛出异常,让客户知道有问题了,以便通知技术人员。因为程序异常以后就崩溃的机会很大,先记录问题下来再崩溃才行。
捕获异常以后,再抛出一个新的异常。再抛出新异常之前,你可以对前面捕获的异常做一些操作,比如记录日志、获取异常信息然后写到新异常中
int num = Convert.ToInt32(textBox1.Text);
try
{
if (num == 0)
{
throw new ArgumentNullException("出现零!");
}
if (num == 1)
{
throw new Exception("出现壹!");
}
}
catch (ArgumentNullException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
catch是用来处理错误,就是发生了错误时,会执行catch部分.注意:是"发生了错误时".
但是, 在没有发生错误时, 你自己想引发错误怎么办呢? 可以使用throw语句来手工引发一个错误.
比如上面这段程序, 你先画一个文本框,textBox1,一个按钮button1, 如果把这段代码放到button1的click事件里.
如果文本框中文本是0,引发一种错误,文本框文本是1时又引发另一种错误,并可采用不同的处理办法.
我认为catch块里通常对附异常有三种办法:一种办法是,什么也不做,catch语句里只有空语句;另一种办法是,用messagebox之类的通知异常;还有一种办法是,throw 一个new的异常。
用哪种办法取决于你希望如何处理这个异常。
如果你想直接通知用户,用messagebox之类的就好了
如果你想由调用这个函数的程序来处理,可以throw一个new
如果你希望你的程序出了“这个”异常还正常运行,就像什么也没发生一样,你可以空语句。
总之try catch是有意义和必要的,但你的程序如何catch就是你自己的想法喽。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2