2012-01-25 6 views

答えて

6

コンストラクタから何も返すことはできません。初期化するにはコンストラクタがあります。

あなたが行うことができます物事のカップルは、状況に応じて、あります

  1. 初期化するfailiureが例外をスローし、Tryブロックを使用して、それをキャッチし、例外的な状況の場合:

    Public Sub New() 
        '... fail to initialize 
        Throw New ApplicationException("Some problem") 'Or whatever type of exception is appropriate 
    End Sub 
    
  2. は、それは多くの障害が発生した場合、あなたは、入力または何かをフィルタリングコンストラクタPrivateを作り、Shared方法で構築することができません。

    Public Shared Function CreateMyObject() 
        If someFailure Then 
         Return Nothing 
        End If 
    
        Return New MyObject() 'Or something 
    End Function 
    
+0

私はスローなアプローチで行きますよ。ありがとう。 – Bill

0

その少し古い学校がありますが、例外が設定されていることLastExceptionプロパティを持つことができます処理されます。

Public Class Foo 
    Private _LastException As Exception = Nothing 
    Public ReadOnly Property LastException As Exception 
     Get 
      Return _LastException 
     End Get 
    End Property 

    Public Sub New() 
     Try 
      'init 
     Catch ex As Exception 
      _LastException = ex 
     End Try 
    End Sub 
End Class 

これは、クラスの作成後LastExceptionをチェックするためにあなたを必要とするが、それはオプションです。 ?

使用法:

Dim foo1 As New Foo 
    If Not foo1.LastException Is Nothing Then 
     'some error occurred 
    Else 
     'carry on 
    End If 
関連する問題