VB.net catching nulls

I query an ldap server and pull back lastlogon timestamp, which i have to convert with the below function.  What happens sometimes is that value is null if the ID exists but maybe is a system id and lastlogon doesnt have a value and errors out with a nullvalueexception.  How can i try catch a function to just move on from blanks:

Function GetInt64FromLargeInteger(ByVal largeInteger As Object) As Int64
        Dim low As Int32
        Dim high As Int32
        Dim valBytes(7) As Byte

        Dim longInt As IADsLargeInteger = CType(largeInteger, IADsLargeInteger)
        low = longInt.LowPart
        high = longInt.HighPart

        BitConverter.GetBytes(low).CopyTo(valBytes, 0)
        BitConverter.GetBytes(high).CopyTo(valBytes, 4)
        Return BitConverter.ToInt64(valBytes, 0)
        Return BitConverter.ToInt64(valBytes, 0)
    End Function

Open in new window

derek7467Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

derek7467Author Commented:
the error happens on this line:

low = longInt.LowPart
0
derek7467Author Commented:
Also, heres how i call it to a textbox control:

If ADEntry.Properties("lastLogon").Value Is Nothing Then
                    acll.Text = ""
                Else
                    acll.Text = pwdDate.ToString()
                End If

Open in new window

0
louisfrCommented:
To check if largeInteger is null, just add a test:
If largeInteger Is Nothing Then Throw New ArgumentNullException("largeInteger")

Open in new window

The caller should ensure it doesn't call this method with a null argument.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Cloud Class® Course: Microsoft Office 2010

This course will introduce you to the interfaces and features of Microsoft Office 2010 Word, Excel, PowerPoint, Outlook, and Access. You will learn about the features that are shared between all products in the Office suite, as well as the new features that are product specific.

derek7467Author Commented:
Thanks, slight modification as your throw exception was causing another null exception.

If largeInteger is nothing Then
Exit Function
Else
low= longInt.LowPart
high = longInt.HighPart
End If

Open in new window


Its underlining my exit function telling me it doesn't return a value.  is that ok?  It leaves the text box blank, which is ok.  but does that make sense?
0
louisfrCommented:
It's not the job of that method to decide what to do with a null value.
It should throw an exception on a null argument.

The caller should check the value is not null and not call the method if it is.

Sometimes, you can deal with null arguments by returning something significant. In your case, it's not possible : any value you would return could be a valid result. Do you want to consider a null argument as a zero?
0
derek7467Author Commented:
I want to consider a null entry blank.
0
louisfrCommented:
Your method returns a numeric value. You must return a value or throw an exception.
0
derek7467Author Commented:
it cant just skip it or leave it blank?
0
louisfrCommented:
A method declared as returning a value will always return a value.
In VB, if the code does not explicitly return anything, you'll get a warning and the method will return zero. The caller has no way of telling if it's been explicitly returned or if it's the default return value.

The caller should check the largeInteger is not null and call the method only if it's not.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic.NET

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.