1. 如果有个异常,
try
{
    //打开文件
    ...代码略
}
catch (Exception)
{
   //是否重试?
   //是的话重新执行try中的语句
}如何达到点击“是”重新执行try中的语句?2. 有的数据库操作,出错后只提示“系统错误”,非得用try catch,然后将ex.Message显示出来才能看到具体的错误提示,有没有其它方法能够直接看到出错信息,而不用我每次都得加上try catch块才能看到。3. C#的Form程序在非调试模式下,是不是出错后都会出现一个“继续/退出”的对话框,点击继续还能运行,那是不是说明C#帮我们内置了异常处理?4. 在开发环境下,有没有什么操作可以让我忽略所有的try catch块?类似VB 6.0开发环境中的选项“发生错误时中断”以上问题解决后立即结帖:)

解决方案 »

  1.   

    第一个问题:
     Err0:
                string str = "JQK";
                try
                {
                    decimal val = decimal.Parse(str);            }
                catch (System.Exception)
                {
                    goto Err0;
                   
                }
      

  2.   

    异常这东西本来就是和程序逻辑无关的无法预料的情况。
    比如磁盘没有空间了,网络断了等。你的程序没有处理异常,那最后只能是.net运行时接管了,他问你“继续还是结束?”。
    如果你用自己的try-catch块捕获了异常,那至少表面上你的程序会漂漂亮亮的,优雅的结束,而不是显示醒目的红叉加上“继续还是结束?”。还是那句话,异常这东西应用的地方原则上是你实在无法预料的情况。你的程序逻辑都对,但一些事情实在不是你的控制的范围,这种场合在用异常。至少原则上是这样。就第一个问题,可以用Label加上goto语句,我自己没用过。还是请先理解异常到底应该用在什么地方这个基本问题再说吧。
      

  3.   

    第一个问题
    void 方法()
    {   try
       {
        //打开文件
        ...代码略
       }
       catch (Exception)
       {
        return "异常";
       
       }}--------------------------------------------------------
    if(方法=="异常) 方法();
      

  4.   

    1. 如果有个异常,
    try
    {
        //打开文件
        ...代码略
    }
    {
       //是否重试?
       //是的话重新执行try中的语句
    }如何达到点击“是”重新执行try中的语句?
    毫无意义!因为一次执行不成功,执行两次就成功了么?出现异常要分析异常,然后排除后解决,否则光是重复执行,没有意义。2. 有的数据库操作,出错后只提示“系统错误”,非得用try catch,然后将ex.Message显示出来才能看到具体的错误提示,有没有其它方法能够直接看到出错信息,而不用我每次都得加上try catch块才能看到。
    异常就是在try catch中捕获的。有异常抛出的代码必须加try catch,否则得不到异常消息
    3. C#的Form程序在非调试模式下,是不是出错后都会出现一个“继续/退出”的对话框,点击继续还能运行,那是不是说明C#帮我们内置了异常处理?
    你将断点插在出现异常的行后面,看继续后是否还可以跟到4. 在开发环境下,有没有什么操作可以让我忽略所有的try catch块?类似VB 6.0开发环境中的选项“发生错误时中断”
    忽略try catch你可以用#if debug #end if来决定什么时候try catch
      

  5.   

    greennetboy(我的老婆叫静静)答得真详细。谢谢了。
    第一种情况用于文件操作时,用户没将盘放入驱动器。难道只能用Goto吗?实在不想用Goto另外,对于第2点
    2. 有的数据库操作,出错后只提示“系统错误”,非得用try catch,然后将ex.Message显示出来才能看到具体的错误提示,有没有其它方法能够直接看到出错信息,而不用我每次都得加上try catch块才能看到。没有其它方法显示出错提示吗?为什么很多错误都能提示出来,但大部分的数据库操作提示不出来?
      

  6.   

    至于你说的为什么数据库的异常不容易被显示,我猜想是应为数据库操作是因为要在进程外操作的缘故,.net操作数据库,必须通过ado.net与数据库打交道,数据库与你的.net程序是两个不同的进程。捕捉异常的能力可能因此打折扣。
      

  7.   

    web.config里面有个配置项,默认异常在远程是看不到详细信息的,这也是为了安全。你到服务器本机上执行就能看到。
    第一个问题lys1978900的思路不错,在方法外部根据方法的返回值判断是否重新调用。
      

  8.   

    greennetboy(我的老婆叫静静) ( ) 回答了
    我接分
      

  9.   

    #if ttt
                try
                {
                    MessageBox.Show("1");#endif 
                    MessageBox.Show("2");
    #if ttt
                    MessageBox.Show("3");
                }
                catch(Exception ex)
                {
                }
    #endif感觉这样别扭啊