?
Solved

VB.net catching nulls

Posted on 2014-11-12
9
Medium Priority
?
90 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
[X]
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
  • 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 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
Independent Software Vendors: 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 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

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

Question has a verified solution.

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

This tutorial demonstrates one way to create an application that runs without any Forms but still has a GUI presence via an Icon in the System Tray. The magic lies in Inheriting from the ApplicationContext Class and passing that to Application.Ru…
Well, all of us have seen the multiple EXCEL.EXE's in task manager that won't die even if you call the .close, .dispose methods. Try this method to kill any excels in memory. You can copy the kill function to create a check function and replace the …
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…
Suggested Courses
Course of the Month13 days, 17 hours left to enroll

801 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