I tend to think of "warning" as - "something unexpected happened, but it was handled safely"
And then "error" as - "things are not okay, a developer is going to need to intervene"
And errors then split roughly between "must be fixed sometime", and "must be fixed now/ASAP"