is there a way to log a non-terminating error without forcing the script to stop with ‘-ErrorAction Stop’
You can use the -ErrorVariable parameter, and check for any records in that variable after the command exits:
Do-Something -ErrorVariable myErrors
if ($myErrors)
{
# handle errors
}