zoukankan      html  css  js  c++  java
  • 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 提供的是弱异常保证(这是出于性能的原因) ,没有提供强异常保证

  • 相关阅读:
    罗尔定理、微分中值定理、广义微分中值定理
    高等数学和数学分析教材推荐及其学习方法浅谈
    音视频下载插件 安装及使用
    win10台式机rtl8188eu(FW 150 UM V2.0)无线网卡无法连接wifi(无法连接到这个网络)
    django模板中的extends和include使用方法
    wordpress中文目录出现“有点尴尬诶!该页无法显示"
    wordpress迁移后登陆时出现Forbidden You don’t have permission to access /wp-login.php on this server
    centos设置开机自启动脚本
    hexo的jacman主题设置语言为英文后偶尔出现中文
    安卓QQ聊天记录导出、备份完全攻略
  • 原文地址:https://www.cnblogs.com/zhangronghua/p/1203799.html
Copyright © 2011-2022 走看看