Validate a string for positive number and normal string
If all negative and zero number strings are invalid, you do not necessarily have to parse it to a long. You can use java regex (regular expressions) to test if the code is negative or zero:

string.matches("-\\d+") // Matches all negative integers, even if they are less than `Long.MIN_VALUE`
string.equals("0") // If the string is zero
string.matches("0+") // If the string consists of a bunch of zeroes, nothing else, or even better
string.matches("0*") // If the string contains nothing except zeroes, meaning this will also match an empty string


So, other than that, this code looks fine to me, but parsing values is fairly expensive and catching exceptions is very expensive, so using regular expressions is probably better.