最近在看异常处理的东西有些东西理解不了:在catch快的末尾,我们有三种选择:
1.重新抛出所捕获的异常,向更高一层的调用堆栈中的代码通知该异常的发生
2.抛出一个不同的异常,向更高一层的调用堆栈中的代码提供更多的异常信息
3.让线程从catch快的底部退出问题:
1.怎么样重新重新抛出所捕获的异常,“更高一层的调用堆栈中的代码”是指什么呢,这个始终没明白呀
2.怎么样抛出一个不同的异常,怎样向更高一层的调用堆栈中的代码提供更多的异常信息
3.怎样让线程从catch快的底部退出

解决方案 »

  1.   

    异常除了
    try{
    }catch(exception e)
    {
    Console.WriteLine(e.Message)
    }
    我什么都不知道,标记一下,将来学习.
      

  2.   

    try
    {
     ... 
    } catch(exception e) 

      throw;//向上层原样抛出
     throw new XXException(...);//抛出其他异常
    } 让线程从catch快的底部退出其实就是忽略这个错误
    try
    {
    }
    catch
    {
     ;//啥都不做
    }
      

  3.   

    try
    {
      ...
      try
      {
        ...
      }
      catch(Exception ee)
      {
        throw new Exception(ee.Message + "\n" + "新的信息");
      }
    }
    catch
    {
      throw;
    }
    异常一层层向外抛,外层只知道异常,不知道哪里出异常,出异常,程序都是运行catch块里的内容,catch块里不处理,那么就运行catch块下面的代码。异常不处理的情况多了,比如网络错误,只需要记录日志就可以
      

  4.   

    .NET平台有许多系统定义的各种异常。
       throw往上层抛出,程序应该是和系统定义的异常去匹配,由系统定义的异常去管理这个异常。
    用户也可以自己定义自己的异常类。
       抛出新的异常,用户可以抛出异常到自己定义的异常,由它去处理。关注..
      

  5.   

    比如我们把一个方法的异常抛出到调用它的地方。
    用 throws Excption修饰方法抛出异常
    在调用的时候用throw来从新获取异常。用System.out,println(ex.getMessage())输出异常
      

  6.   

    一般我们都用这样的模式:
    try
      {
         ……
      }
    catch(exception ex)
      {
         Messagebox.show(……);//抛出异常
      }
    finally
      {
         close();
      }
    楼主参考参考呀……
      

  7.   

    可以这样理解,异常是一个事件,try{..}块内的代码只要出错,就触发事件,这个触发相当于一个goto语句,goto到catch{...}块。仅此而已
    那么什么是错误呢,就是throw语句,所有的异常都是throw语句发出的,可以这样想,throw就是goto指令。
    finaly就是不管try{...}里面有没有异常,最后都要执行finally里的语句,但是多层的try,它的finally的执行顺序我也有点搞不清,反正肯定会执行
    一般异常的使用场合就是在文件操作、网络操作等需要占用资源的语句外加一层try,然后将释放的语句放入finally,保证没有挂起的资源