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 内)