forked from zeromq/clrzmq4
-
Notifications
You must be signed in to change notification settings - Fork 4
/
ZException.cs
108 lines (95 loc) · 2.96 KB
/
ZException.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
namespace ZeroMQ
{
using System;
using System.Runtime.Serialization;
using lib;
using System.Runtime.InteropServices;
/// <summary>
/// An exception thrown by the result of libzmq.
/// </summary>
[Serializable]
public class ZException : Exception
{
private ZError _error;
/// <summary>
/// Gets the error code returned by libzmq.
/// </summary>
[Obsolete("Use Error property instead")]
public int ErrNo
{
// TODO why is "0" the default?
get { return _error != null ? _error.Number : 0; }
}
/// <summary>
/// Gets the error code returned by libzmq.
/// </summary>
[Obsolete("Use Error property instead")]
public string ErrName
{
get
{
return _error != null ? _error.Name : string.Empty;
}
}
/// <summary>
/// Gets the error text returned by libzmq.
/// </summary>
[Obsolete("Use Error property instead")]
public string ErrText
{
get
{
return _error != null ? _error.Text : string.Empty;
}
}
public ZError Error
{
get { return _error; }
}
/// <summary>
/// Initializes a new instance of the <see cref="ZException"/> class.
/// </summary>
/// <param name="errorCode">The error code returned by the ZeroMQ library call.</param>
protected ZException()
{ }
/// <summary>
/// Initializes a new instance of the <see cref="ZException"/> class.
/// </summary>
/// <param name="errorCode">The error code returned by the ZeroMQ library call.</param>
internal ZException(ZError errorSymbol)
: this(errorSymbol, default(string), default(Exception))
{ }
/// <summary>
/// Initializes a new instance of the <see cref="ZException"/> class.
/// </summary>
/// <param name="errorCode">The error code returned by the ZeroMQ library call.</param>
internal ZException(ZError errorSymbol, string message)
: this(errorSymbol, message, default(Exception))
{ }
public ZException(ZError errorSymbol, string message, Exception inner)
: base(MakeMessage(errorSymbol, message), inner)
{
this._error = errorSymbol;
}
static string MakeMessage(ZError error, string additionalMessage)
{
return error != null
? (string.IsNullOrEmpty(additionalMessage)
? error.ToString()
: string.Format("{0}: {1}", error, additionalMessage))
: additionalMessage;
}
public override string ToString()
{
return Message;
}
/// <summary>
/// Initializes a new instance of the <see cref="ZException"/> class.
/// </summary>
/// <param name="info"><see cref="SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
/// <param name="context"><see cref="StreamingContext"/> that contains contextual information about the source or destination.</param>
protected ZException(SerializationInfo info, StreamingContext context)
: base(info, context)
{ }
}
}