1 #region License Information
3 * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
5 * This file is part of HeuristicLab.
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
23 using HeuristicLab
.PluginInfrastructure
;
25 namespace HeuristicLab
.Core
{
26 public class OperatorExecutionException
: Exception
{
27 private readonly IOperator op
;
28 public IOperator Operator
{
32 private readonly string message
;
33 public override string Message
{
35 string name
= "\"" + op
.Name
+ "\"";
36 var assembly
= op
.GetType().Assembly
;
37 if (!op
.Name
.Equals(op
.ItemName
)) name
+= " (" + op
.ItemName
+ ")";
38 if (!string.IsNullOrEmpty(assembly
.Location
)) {
39 name
+= " [" + assembly
.Location
+ ": " + AssemblyHelpers
.GetFileVersion(assembly
) + "]";
41 if (InnerException
== null)
42 return base.Message
+ name
+ message
+ ".";
44 return base.Message
+ name
+ ": " + InnerException
.Message
;
48 public OperatorExecutionException(IOperator op
) : this(op
, string.Empty
) { }
49 public OperatorExecutionException(IOperator op
, string message
)
50 : base("An exception was thrown by the operator ") {
51 if (op
== null) throw new ArgumentNullException();
53 this.message
= message
;
55 public OperatorExecutionException(IOperator op
, Exception innerException
)
56 : base("An exception was thrown by the operator ", innerException
) {
57 if (op
== null) throw new ArgumentNullException();