[#2] Using custom exception instead of RuntimeException.