/* * This file is part of LuaInterface. * * Copyright (C) 2003-2005 Fabio Mascarenhas de Queiroz. * Copyright (C) 2012 Megax * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ using System; namespace LuaInterface { /// /// Exceptions thrown by the Lua runtime because of errors in the script /// public class LuaScriptException : LuaException { /// /// Returns true if the exception has occured as the result of a .NET exception in user code /// public bool IsNetException { get; private set; } private readonly string source; /// /// The position in the script where the exception was triggered. /// public override string Source { get { return source; } } /// /// Creates a new Lua-only exception. /// /// The message that describes the error. /// The position in the script where the exception was triggered. public LuaScriptException(string message, string source) : base(message) { this.source = source; } /// /// Creates a new .NET wrapping exception. /// /// The .NET exception triggered by user-code. /// The position in the script where the exception was triggered. public LuaScriptException(Exception innerException, string source) : base("A .NET exception occured in user-code", innerException) { this.source = source; this.IsNetException = true; } public override string ToString() { // Prepend the error source return GetType().FullName + ": " + source + Message; } } }