?
Solved

VB.net catching nulls

Posted on 2014-11-12
9
Medium Priority
?
93 Views
Last Modified: 2014-11-13
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

0
Comment
Question by:derek7467
  • 5
  • 4
9 Comments
 

Author Comment

by:derek7467
ID: 40437274
the error happens on this line:

low = longInt.LowPart
0
 

Author Comment

by:derek7467
ID: 40437321
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
 
LVL 12

Accepted Solution

by:
louisfr earned 2000 total points
ID: 40437749
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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:derek7467
ID: 40437838
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
 
LVL 12

Expert Comment

by:louisfr
ID: 40439296
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
 

Author Comment

by:derek7467
ID: 40439542
I want to consider a null entry blank.
0
 
LVL 12

Expert Comment

by:louisfr
ID: 40439612
Your method returns a numeric value. You must return a value or throw an exception.
0
 

Author Comment

by:derek7467
ID: 40439955
it cant just skip it or leave it blank?
0
 
LVL 12

Expert Comment

by:louisfr
ID: 40442027
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

Featured Post

Become an Android App Developer

Ready to kick start your career in 2018? Learn how to build an Android app in January’s Course of the Month and open the door to new opportunities.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I think the Typed DataTable and Typed DataSet are very good options when working with data, but I don't like auto-generated code. First, I create an Abstract Class for my DataTables Common Code.  This class Inherits from DataTable. Also, it can …
Introduction When many people think of the WebBrowser (http://msdn.microsoft.com/en-us/library/2te2y1x6%28v=VS.85%29.aspx) control, they immediately think of a control which allows the viewing and navigation of web pages. While this is true, it's a…
With just a little bit of  SQL and VBA, many doors open to cool things like synchronize a list box to display data relevant to other information on a form.  If you have never written code or looked at an SQL statement before, no problem! ...  give i…
Enter Foreign and Special Characters Enter characters you can't find on a keyboard using its ASCII code ... and learn how to make a handy reference for yourself using Excel ~ Use these codes in any Windows application! ... whether it is a Micr…
Suggested Courses

621 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question