[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 10562] Re: リファクタリ ングを読む会第 5 回議事録



  高橋(智)です。
  ちなみにC#とC++では次のようになります。

---- C# ------------------------------------------------------
public class ReturnTest {
  public static void Main(string[] args) {
    ReturnTest test = new ReturnTest();

    int retval1 = test.foo(false);
    System.Console.Out.WriteLine(retval1);

    int retval2 = test.foo(true);
    System.Console.Out.WriteLine(retval2);
  }

  public int foo(bool error) {
    try {
      // do something...
      if( error )
        throw new System.SystemException("test exception");
      return 99;
    }
    finally {
      return 100; // 20行目!!
    }
  }
}
---- コンパイル&実行-----------------------------------------
C:\tmp>csc ReturnTest.cs
Microsoft (R) Visual C# .NET Compiler version 7.00.9466

ReturnTest.cs(20,7): error CS0157: コントロールが finally
        句の本体から出られません。

C:\tmp>



---- C++ -----------------------------------------------------
#include <stdio.h>

class Exception {
};

int foo(bool error) {
  try {
    if( error )
      throw Exception();
    return 99;
  }
  __finally {
    return 100;
  }
}

#pragma argsused
int main(int argc, char* argv[])
{
  int retval1 = foo(false);
  fprintf(stdout, "%d\n", retval1);
  int retval2 = foo(true);
  fprintf(stdout, "%d\n", retval2);

  return 0;
}
---- コンパイル&実行-----------------------------------------
C:\tmp>make -f ReturnTest.mak
MAKE Version 5.2  Copyright (c) 1987, 2000 Borland

C:\tmp>ReturnTest.exe
100
100



"TAKAHASHI, Tomohiro" wrote:
> 
> Takagi Kei wrote:
> snip
> > ⇒finalyの中でrerurnを書くとどうなる?(★宿題)
snip

-- 
高橋智宏
  Java読書会( http://www.t3-jpn.com/bof/ )
  T3-Japan( http://www.t3-jpn.com/ )