Does this help solve your error handling problem?
$(ForEach ($IPADDR in $IPADDR)
{
Try {
[System.Net.DNS]::GetHostbyAddress($IPADDR) |
Select Hostname,@{label='IP';expression={$IPADDR}}
}
Catch {
Add-Content -Value "$IPADDR failed lookup" -Path "C:\Users\douglasfrancis\Desktop\Script_Results\ReverseLookup_failed.csv"
}
}) | Sort -Property Hostname |
Export-Csv "C:\Users\douglasfrancis\Desktop\Script_Results\ReverseLookup.csv" -NoTypeInformation