#3136
[heuristiclab.git] / HeuristicLab.Core / 3.3 / OperatorExecutionException.cs
blobb37dbae432c54321d2292a1f7d739bfcd21d51ab
1 #region License Information
2 /* HeuristicLab
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/>.
20 #endregion
22 using System;
23 using HeuristicLab.PluginInfrastructure;
25 namespace HeuristicLab.Core {
26 public class OperatorExecutionException : Exception {
27 private readonly IOperator op;
28 public IOperator Operator {
29 get { return op; }
32 private readonly string message;
33 public override string Message {
34 get {
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 + ".";
43 else
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();
52 this.op = op;
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();
58 this.op = op;