次の方法で共有


CodeTryCatchFinallyStatement クラス

任意の数の catch 句と、省略可能な finally ブロックを持つ try ブロックを表します。

この型のすべてのメンバの一覧については、CodeTryCatchFinallyStatement メンバ を参照してください。

System.Object
   System.CodeDom.CodeObject
      System.CodeDom.CodeStatement
         System.CodeDom.CodeTryCatchFinallyStatement

<Serializable>
<ClassInterface(ClassInterfaceType.AutoDispatch)>
<ComVisible(True)>
Public Class CodeTryCatchFinallyStatement   Inherits CodeStatement
[C#]
[Serializable]
[ClassInterface(ClassInterfaceType.AutoDispatch)]
[ComVisible(true)]
public class CodeTryCatchFinallyStatement : CodeStatement
[C++]
[Serializable]
[ClassInterface(ClassInterfaceType::AutoDispatch)]
[ComVisible(true)]
public __gc class CodeTryCatchFinallyStatement : public   CodeStatement
[JScript]
public
   Serializable
 ClassInterface(ClassInterfaceType.AutoDispatch)
 ComVisible(true)
class CodeTryCatchFinallyStatement extends CodeStatement

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

CodeTryCatchFinallyStatement を使用して、コードの try/ catch ブロックを表すことができます。

TryStatements プロパティは、 try ブロック内で実行するステートメントを格納します。 CatchClauses プロパティは、キャッチした例外を処理する catch 句を格納します。 FinallyStatements プロパティは、 finally ブロック内で実行するステートメントを格納します。

メモ    try/catch ブロックは、すべての言語でサポートされているわけではありません。コード ジェネレータが try/catch の各ブロックをサポートしているかどうかを調べるには、 GeneratorSupport.TryCatchStatements フラグを指定して Supports メソッドを呼び出します。

使用例

[Visual Basic, C#, C++] CodeTryCatchFinallyStatement を使用して、例外を処理するための try...catch...finally ステートメントを定義する方法については、次のコード例を参照してください。

 
' Declares a type to contain a try...catch block.
Dim type1 As New CodeTypeDeclaration("TryCatchTest")

' Defines a method that throws an exception of type System.ApplicationException.
Dim method1 As New CodeMemberMethod()
method1.Name = "ThrowApplicationException"
method1.Statements.Add(New CodeThrowExceptionStatement( _
    New CodeObjectCreateExpression("System.ApplicationException", New CodePrimitiveExpression("Test Application Exception"))))
type1.Members.Add(method1)

' Defines a constructor that calls the ThrowApplicationException method from a try block.
Dim constructor1 As New CodeConstructor()
constructor1.Attributes = MemberAttributes.Public
type1.Members.Add(constructor1)

' Defines a try statement that calls the ThrowApplicationException method.
Dim try1 As New CodeTryCatchFinallyStatement()
try1.TryStatements.Add(New CodeMethodInvokeExpression(New CodeThisReferenceExpression(), "ThrowApplicationException"))
constructor1.Statements.Add(try1)

' Defines a catch clause for exceptions of type ApplicationException.
Dim catch1 As New CodeCatchClause("ex", New CodeTypeReference("System.ApplicationException"))
catch1.Statements.Add(New CodeCommentStatement("Handle any System.ApplicationException here."))
try1.CatchClauses.Add(catch1)

' Defines a catch clause for any remaining unhandled exception types.
Dim catch2 As New CodeCatchClause("ex")
catch2.Statements.Add(New CodeCommentStatement("Handle any other exception type here."))
try1.CatchClauses.Add(catch2)

' Defines a finally block by adding to the FinallyStatements collection.
try1.FinallyStatements.Add(New CodeCommentStatement("Handle any finally block statements."))

' A Visual Basic code generator produces the following source code for the preceeding example code:

'    public class TryCatchTest 
'    {
'        
'        public TryCatchTest() 
'        {
'            try 
'            {
'                this.ThrowApplicationException();
'            }
'            catch (System.ApplicationException ex) 
'            {
'                // Handle any System.ApplicationException here.
'            }
'            catch (System.Exception ex) 
'            {
'                // Handle any other exception type here.
'            }
'          finally {
'                // Handle any finally block statements.
'            }
'        }
'        
'        private void ThrowApplicationException() 
'        {
'            throw new System.ApplicationException("Test Application Exception");
'        }
'    }

[C#] 
// Declares a type to contain a try...catch block.
CodeTypeDeclaration type1 = new CodeTypeDeclaration("TryCatchTest");

// Defines a method that throws an exception of type System.ApplicationException.
CodeMemberMethod method1 = new CodeMemberMethod();
method1.Name = "ThrowApplicationException";
method1.Statements.Add( new CodeThrowExceptionStatement( 
    new CodeObjectCreateExpression("System.ApplicationException", new CodePrimitiveExpression("Test Application Exception")) ) );
type1.Members.Add( method1 );

// Defines a constructor that calls the ThrowApplicationException method from a try block.
CodeConstructor constructor1 = new CodeConstructor();
constructor1.Attributes = MemberAttributes.Public;            
type1.Members.Add( constructor1 );    
        
// Defines a try statement that calls the ThrowApplicationException method.
CodeTryCatchFinallyStatement try1 = new CodeTryCatchFinallyStatement();
try1.TryStatements.Add( new CodeMethodInvokeExpression( new CodeThisReferenceExpression(), "ThrowApplicationException" ) );
constructor1.Statements.Add( try1 );                    

// Defines a catch clause for exceptions of type ApplicationException.
CodeCatchClause catch1 = new CodeCatchClause("ex", new CodeTypeReference("System.ApplicationException"));
catch1.Statements.Add( new CodeCommentStatement("Handle any System.ApplicationException here.") );
try1.CatchClauses.Add( catch1 );

// Defines a catch clause for any remaining unhandled exception types.
CodeCatchClause catch2 = new CodeCatchClause("ex");
catch2.Statements.Add( new CodeCommentStatement("Handle any other exception type here.") );
try1.CatchClauses.Add( catch2 );
        
// Defines a finally block by adding to the FinallyStatements collection.
try1.FinallyStatements.Add( new CodeCommentStatement("Handle any finally block statements.") );
        
// A C# code generator produces the following source code for the preceeding example code:
    
//    public class TryCatchTest 
//    {
//        
//        public TryCatchTest() 
//        {
//            try 
//            {
//                this.ThrowApplicationException();
//            }
//            catch (System.ApplicationException ex) 
//            {
//                // Handle any System.ApplicationException here.
//            }
//            catch (System.Exception ex) 
//            {
//                // Handle any other exception type here.
//            }
//          finally {
//                // Handle any finally block statements.
//            }
//        }
//        
//        private void ThrowApplicationException() 
//        {
//            throw new System.ApplicationException("Test Application Exception");
//        }
//    }


[C++] 
// Declares a type to contain a try...catch block.
CodeTypeDeclaration* type1 = new CodeTypeDeclaration(S"TryCatchTest");

// Defines a method that throws an exception of type System.ApplicationException.
CodeMemberMethod* method1 = new CodeMemberMethod();
method1->Name = S"ThrowApplicationException";
CodePrimitiveExpression* temp[] = {new CodePrimitiveExpression(S"Test Application Exception")};
method1->Statements->Add( new CodeThrowExceptionStatement( 
    new CodeObjectCreateExpression(S"System.ApplicationException", temp) ) );
type1->Members->Add( method1 );

// Defines a constructor that calls the ThrowApplicationException method from a try block.
CodeConstructor* constructor1 = new CodeConstructor();
constructor1->Attributes = MemberAttributes::Public;            
type1->Members->Add( constructor1 );    

// Defines a try statement that calls the ThrowApplicationException method.
CodeTryCatchFinallyStatement* try1 = new CodeTryCatchFinallyStatement();
try1->TryStatements->Add( new CodeMethodInvokeExpression( new CodeThisReferenceExpression(), S"ThrowApplicationException", 0 ) );
constructor1->Statements->Add( try1 );                    

// Defines a catch clause for exceptions of type ApplicationException.
CodeCatchClause* catch1 = new CodeCatchClause(S"ex", new CodeTypeReference(S"System.ApplicationException"));
catch1->Statements->Add( new CodeCommentStatement(S"Handle any System.ApplicationException here.") );
try1->CatchClauses->Add( catch1 );

// Defines a catch clause for any remaining unhandled exception types.
CodeCatchClause* catch2 = new CodeCatchClause(S"ex");
catch2->Statements->Add( new CodeCommentStatement(S"Handle any other exception type here.") );
try1->CatchClauses->Add( catch2 );

// Defines a finally block by adding to the FinallyStatements collection.
try1->FinallyStatements->Add( new CodeCommentStatement(S"Handle any finally block statements.") );

// A C# code generator produces the following source code for the preceeding example code:

//    public class TryCatchTest 
//    {
//        
//        public TryCatchTest() 
//        {
//            try 
//            {
//                this.ThrowApplicationException();
//            }
//            catch (System.ApplicationException ex) 
//            {
//                // Handle any System.ApplicationException here.
//            }
//            catch (System.Exception ex) 
//            {
//                // Handle any other exception type here.
//            }
//          finally {
//                // Handle any finally block statements.
//            }
//        }
//        
//        private void ThrowApplicationException() 
//        {
//            throw new System.ApplicationException("Test Application Exception");
//        }
//    }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.CodeDom

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System (System.dll 内)

参照

CodeTryCatchFinallyStatement メンバ | System.CodeDom 名前空間