blob: ea8d6f66114ce3c9401b59816b54120064153af7 [file] [log] [blame]
Matteo Scandoloa4285862020-12-01 18:10:10 -08001/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
20package thrift
21
22import (
23 "errors"
24)
25
26// Generic Thrift exception
27type TException interface {
28 error
29}
30
31// Prepends additional information to an error without losing the Thrift exception interface
32func PrependError(prepend string, err error) error {
33 if t, ok := err.(TTransportException); ok {
34 return NewTTransportException(t.TypeId(), prepend+t.Error())
35 }
36 if t, ok := err.(TProtocolException); ok {
37 return NewTProtocolExceptionWithType(t.TypeId(), errors.New(prepend+err.Error()))
38 }
39 if t, ok := err.(TApplicationException); ok {
40 return NewTApplicationException(t.TypeId(), prepend+t.Error())
41 }
42
43 return errors.New(prepend + err.Error())
44}