Your code you showed us CANNOT EVER get a result of "Other" because the last eval will set every record to "Error2", regardless of what kind of record it is.
Try something like this and see what you get.
sourcetype="SourceA" ERROR NOT "GET-INFO" NOT "GET-ArchivedInfo"
| eval ErrType=case(match(_raw,"Error 1 Message string"),"Error1",
match(_raw,"Error 2 message"),"Error1",
FIll in the "Error 1 Message String" with a string that will match only that kind of record. Remember to escape any periods or asterisks... in this case you can probably get away with just putting each one in square braces.... like [.] or [*]. If you can't figure out how to make the match logic work, then get on the splunk slack channel, #regex subchannel, and we can help you get it right.