https://vexx32.github.io/2019/01/31/PowerShell-Error-Handling/
This post is amazing, but it doesn't talk about error handling in classes (where you don't have $PSCmdlet).
Explain that since PSCmdlet doesn't exist, you should use throw, possibly with an example similar to this:
throw [ArgumentException]::new("Bad data: $argumentVariable")