// Copyright (c) 2004, 2021, Oracle and/or its affiliates. // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License, version 2.0, as // published by the Free Software Foundation. // // This program is also distributed with certain software (including // but not limited to OpenSSL) that is licensed under separate terms, // as designated in a particular file or component or in included license // documentation. The authors of MySQL hereby grant you an // additional permission to link the program and your derivative works // with the separately licensed software that they have included with // MySQL. // // Without limiting anything contained in the foregoing, this file, // which is part of MySQL Connector/NET, is also subject to the // Universal FOSS Exception, version 1.0, a copy of which can be found at // http://oss.oracle.com/licenses/universal-foss-exception. // // This program is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License, version 2.0, for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software Foundation, Inc., // 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA using System; using MySql.Data.MySqlClient; using System.Data.Common; using System.Runtime.Serialization; namespace MySql.Data.MySqlClient { /// /// The exception that is thrown when MySQL returns an error. This class cannot be inherited. /// /// [Serializable] public sealed class MySqlException : DbException { internal MySqlException() { } internal MySqlException(string msg) : base(msg) { } internal MySqlException(string msg, Exception ex) : base(msg, ex) { } internal MySqlException(string msg, bool isFatal, Exception inner) : base(msg, inner) { this.IsFatal = isFatal; } internal MySqlException(string msg, int errno, Exception inner) : this(msg, inner) { this.Number = errno; this.Data.Add("Server Error Code", errno); } internal MySqlException(string msg, int errno, bool isFatal) : this(msg) { this.Number = errno; this.IsFatal = isFatal; this.Data.Add("Server Error Code", errno); } internal MySqlException(string msg, int errno) : this(msg, errno, null) { } internal MySqlException(UInt32 code, string sqlState, string msg) : base(msg) { this.Code = code; this.SqlState = sqlState; } private MySqlException(SerializationInfo info, StreamingContext context) : base(info, context) { } /// /// Gets a number that identifies the type of error. /// public int Number { get; } /// /// True if this exception was fatal and cause the closing of the connection, false otherwise. /// internal bool IsFatal { get; } internal bool IsQueryAborted => (this.Number == (int)MySqlErrorCode.QueryInterrupted || this.Number == (int)MySqlErrorCode.FileSortAborted); /// /// Gets the SQL state. /// #pragma warning disable CS0114 // “MySqlException.SqlState”隐藏继承的成员“DbException.SqlState”。若要使当前成员重写该实现,请添加关键字 override。否则,添加关键字 new。 public string SqlState { get; private set; } #pragma warning restore CS0114 // “MySqlException.SqlState”隐藏继承的成员“DbException.SqlState”。若要使当前成员重写该实现,请添加关键字 override。否则,添加关键字 new。 /// /// Gets an integer that representes the MySQL error code. /// public UInt32 Code { get; private set; } } }