才学asp.net,用c#
主要是想用throw,我想知道为什么要用throw,看下面两段话
1
int.Parse("sdsd");
2
try
{
    int.Parse("sdsd");
}
catch (Exception ex) 
{ throw new Exception("字符格式有问题!",ex);

}
上面两种写法最后的报错信息都是一样的,搞不清楚这个throw到底有什么用?用在什么地方
我看不出来,请老鸟解答

解决方案 »

  1.   

    你这个throw指的是ex当然跟int.Parse("sdsd")的一样啦
      

  2.   

    我用的一段代码,也面报错时是这样写的,给你参考一下
    catch(Exception ex)
    {
    throw new Exception(Request.Url.ToString()+ex.Message+" 数据绑定失败!");
    }
      

  3.   

    to hareqiqi(蓝兔子.net)说的是对的
      

  4.   

    同意hareqiqi(蓝兔子)的说法
      

  5.   

    可是出现错误
    都是到那个难看的错误页面,用户不希望看到这个页面,他会认为是程序有问题另外问一下,如果刚才我写的
    try
    {
        int.Parse("sdsd");
    }
    catch (Exception ex) 
    { throw new Exception("字符格式有问题!",ex);

    }
    现在放在一个类里作为一个方法web页面调用它也会出错,
    不会在web页面也用try .. catch ..语句来发现异常吧?
    请问如果是用三层结构
    那些异常情况都封装在逻辑层
    请问在web即表现层 应该如何表达这种异常?
      

  6.   

    try
    {
    Console.WriteLine("请你输入你的年龄:");
    int age=Int32.Parse(Console.ReadLine());
    if(age<1 || age>150)
    {
    throw new Exception("胡说八道,你会是这样的年纪吗?");//人为抛出异常
    }
    else 
    {
    Console.WriteLine("合法的年龄,异常没有被引发~");
    }}
    catch(Exception e)
    {
    Console.WriteLine(e);
    }
    }
    }
      

  7.   

    为什么在aspx页面的代码*.cs里写
    throw new Exception("胡说八道,你会是这样的年纪吗?");//人为抛出异常
    程序运行出错,不是出错,是根本就不能运行,为什么?再说用throw的目的是为了调试方便吗?
      

  8.   

    throw好象是用在winform里面的
    在webform中一般都是response.write(ex.message)
      

  9.   

    可是我看到
    微软自己写的数据访问层,如Sqlhelper
    里面的数据操作就有
    throw语句
    我写程序调用他们,故意讲sql语句写错,页面也讨厌的出来让人看的不舒服的错误界面可是我试着改一下,讲Sqlhelper.cs里的一个方法

    try
    carch
    finally
    及其throw语句
    去掉,web页面调用出来的错误页面还是一样的
    所以我就怀疑这个try ..catch ..语句有什么用?
    最终web页面调用该出错的地方还是要出错
    难道在web界面层,调用逻辑层里的方法
    也要try ...catch....
    如果前后都要,那么在逻辑层或者数据访问层要try ...catch...
    干什么,有什么用?
      

  10.   

    无论做不做分层,一般好点的系统都会有专门的异常处理模块,在捕获到异常的时候都会发给异常处理模块,根据异常的类型进行相应处理。比如,你在数据访问层,产生了异常,或者是数据库服务器不可用,或者连接到最大数,都会抛出相应的异常,而此时你自定义了一个异常类(比如叫数据库异常),只要是数据访问层的异常,你都让它抛出一个数据库异常,然后发送给异常处理类,异常处理类,接收到异常,一看是数据库访问出错,不能把日志写入数据库了,就只好写入到文件中,并产生友好提示(比如,实际上的异常可能是说SQL Server not exist or can't found,你就可以显示为“数据库访问错误,请及时联系数据库管理员或系统管理员”)。如果是在其它层发生的异常,你尽可能缩小其产生异常的范围,怎么会产生异常,一般会产生哪些异常,然后综合定义一些异常类,然后再在异常处理模块捕获处理就OK了