Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

VB.net catching nulls

Posted on 2014-11-12
9
87 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 11

Accepted Solution

by:
louisfr earned 500 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
Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

 

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 11

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 11

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 11

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

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
VB 2005 Tooltips on Form Load Event 15 34
VB.NET 1 28
Import Data from Multiple Text Files in Excel 12 61
Iteration Help (Asp.net VB) 5 24
If you're writing a .NET application to connect to an Access .mdb database and use pre-existing queries that require parameters, you've come to the right place! Let's say the pre-existing query(qryCust) in Access takes a Date as a parameter and l…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scanner…

829 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