日期:2014-05-19  浏览次数:21007 次

在catch块中throw new exception(string,exception)有什么意义?
如题

------解决方案--------------------
throw new exception(string,exception)

throw是明确地抛出异常

MSDN:
Exception (String, Exception) 使用指定错误信息和对作为此异常原因的内部异常的引用来初始化 Exception 类的新实例。
------解决方案--------------------
如果要现实:

在发现异常以后作一下记录异常信息然后在抛出异常,让客户知道有问题了,以便通知技术人员。

你见到的那种方式就有必要了,因为程序异常以后就崩溃的机会很大,先记录问题下来再崩溃才行。
------解决方案--------------------
捕获异常以后,再抛出一个新的异常。
再抛出新异常之前,你可以对前面捕获的异常做一些操作,比如记录日志、获取异常信息然后写到新异常中
------解决方案--------------------
我认为catch块里通常对附异常有三种办法
一种办法是,什么也不做,catch语句里只有空语句
另一种办法是,用messagebox之类的通知异常
还有一种办法是,throw 一个new的异常。
用哪种办法取决于你希望如何处理这个异常。
如果你想直接通知用户,用messagebox之类的就好了
如果你想由调用这个函数的程序来处理,可以throw一个new
如果你希望你的程序出了“这个”异常还正常运行,就像什么也没发生一样,你可以空语句。
总之try catch是有意义和必要的,但你的程序如何catch就是你自己的想法喽。
------解决方案--------------------
int num = Convert.ToInt32(textBox1.Text);

try
{
if (num == 0)
{
throw new ArgumentNullException( "出现零! "); // 引发第一种错误,至于错误类型,C#有许多你查一下。
}
if (num == 1)
{
throw new Exception( "出现壹! "); // 引发第二种错误。
}
}
catch (ArgumentNullException ex) // 处理第一种错误,你看ArgumentNullException是不是和上面批配?
{
MessageBox.Show(ex.Message);
}
catch (Exception ex) // 处理第二种错误。
{
MessageBox.Show(ex.Message);
}