• ICE框架之Sclice2CSharp映射---异常的处理


     任何操作调用都可以抛出运行时异常,而且,如果操作有异常规范,还可以抛出用户异常。假定我们有这样一个简单的接口:

              exception Tantrum {

                  string reason;

              };

              interface Child {

                  void askToCleanUp() throws Tantrum;

              };

    Slice 异常是作为C# 异常抛出的,所以你可以把一个或更多操作调用放在 trycatch块中:

              ChildPrx child = ...;    // Get child proxy...

              try {

                  child.askToCleanUp();

              } catch (Tantrum t) {

                  System.Console.write("The child says: ");

                  System.Console.writeln(t.reason);

              }

    在典型情况下,你只需针对操作调用捕捉你感兴趣的一些异常;其他异常,比如意料之外的运行时错误,通常会由更高层次的异常处理器来处理。例如:

              public class Client {

                  static void run() {

                      ChildPrx child = ...;    // Get child proxy...

                      try {

                          child.askToCleanUp();

                       } catch (Tantrum t) {

                          System.Console.Write("The child says: ");

                          System.Console.Write(t.reason);

                          p.scold();               // Recover from error...

                       }

                      p.praise();                  // Give positive feedback...

                  }

                  public static void

                  main(String[] args)

                  {

                      try {

                          // ...

                          run();

                          // ...

                       } catch (Ice. Exception e) {

                          System.Console.Write(e);

                       }

                  }

              }

    出于局部的考虑,这段代码会在调用的地方处理一个具体的异常,并且一般化地处理其他异常 .

     注意,异常的ToString方法会输出异常的名称、内部异常的信息以及踀痕迹,当然你可以选择显示异常的那些信息,比如你可以用e.GetType().Name只输出异常的名字。

    异常与out 参数

    当操作抛出异常时,Ice run time 不保证out 参数的状态:参数的值可能没有变,也可能已经被目标对象中的操作实现改变了。换句话说,对于输出参数,Ice 提供的是弱异常保证(这是出于性能的原因) ,没有提供强异常保证

  • 相关阅读:
    playbook运行时传参方式
    playbook中判断OS发行版本
    前端https请求到A,A将该https请求转发的B
    Kubernetes编排原理(四)
    华为笔试题总结
    反射学习笔记
    Spring学习笔记(1)
    Spring学习笔记(2)
    [luogu8293]序列变换
    [uoj728]坏掉的设备2
  • 原文地址:https://www.cnblogs.com/zhangronghua/p/1203799.html
Copyright © 2020-2023  润新知