From 9d3fa666c46b80af6d0534fa707dab07970027ba Mon Sep 17 00:00:00 2001 From: F1rsTTeaM Date: Thu, 18 Apr 2024 18:14:42 +0400 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B2=20StorageCollection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StorageCollection.cs | 32 ++++++++++++------- .../FormAirplaneCollection.cs | 17 +++++----- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/CollectionGenericObjects/StorageCollection.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/CollectionGenericObjects/StorageCollection.cs index 81db8f9..3f43bec 100644 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/CollectionGenericObjects/StorageCollection.cs +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/CollectionGenericObjects/StorageCollection.cs @@ -1,6 +1,7 @@ using System.IO; using System.Text; using ProjectAirplaneWithRadar.Drawnings; +using ProjectAirplaneWithRadar.Exceptions; namespace ProjectAirplaneWithRadar.CollectionGenericObjects { @@ -98,10 +99,10 @@ namespace ProjectAirplaneWithRadar.CollectionGenericObjects /// /// Путь и имя файла /// true - сохранение прошло успешно, false - ошибка при сохранении данных - public bool SaveData(string filename) + public void SaveData(string filename) { - if(_storages.Count == 0) - return false; + if (_storages.Count == 0) + throw new Exception("В хранилище отсутсвуют коллекции для сохранения"); if(File.Exists(filename)) File.Delete(filename); @@ -136,7 +137,6 @@ namespace ProjectAirplaneWithRadar.CollectionGenericObjects sw.Write(_separatorItems); } } - return true; } /// @@ -144,11 +144,11 @@ namespace ProjectAirplaneWithRadar.CollectionGenericObjects /// /// Путь и имя файла /// true - загрузка прошла успешно, false - ошибка при загрузке данных - public bool LoadData(string filename) + public void LoadData(string filename) { if (!File.Exists(filename)) { - return false; + throw new Exception("Файл не существует"); } using (FileStream fs = new(filename, FileMode.Open)) @@ -158,12 +158,12 @@ namespace ProjectAirplaneWithRadar.CollectionGenericObjects string str = sr.ReadLine(); if (str == null || str.Length == 0) { - return false; + throw new Exception("В файле нет данных"); } if (!str.Equals(_collectionKey)) { - return false; + throw new Exception("В файле неверные данные"); } _storages.Clear(); @@ -179,7 +179,7 @@ namespace ProjectAirplaneWithRadar.CollectionGenericObjects ICollectionGenericObjects? collection = StorageCollection.CreateCollection(collectionType); if (collection == null) { - return false; + throw new Exception("Не удалось создать коллекцию"); } collection.MaxCount = Convert.ToInt32(record[2]); @@ -189,14 +189,22 @@ namespace ProjectAirplaneWithRadar.CollectionGenericObjects { if (elem?.CreateDrawningAirplane() is T airplane) { - if (collection.Insert(airplane) == -1) - return false; + try + { + if (collection.Insert(airplane) < 0) + { + throw new Exception("Объект не удалось добавить в коллекцию: " + record[3]); + } + } + catch (CollectionOverflowException ex) + { + throw new Exception("Коллекция переполнена", ex); + } } } _storages.Add(record[0], collection); } } - return true; } /// diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneCollection.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneCollection.cs index 6074f1f..a4d6e91 100644 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneCollection.cs +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneCollection.cs @@ -249,14 +249,15 @@ namespace ProjectAirplaneWithRadar { if (saveFileDialog.ShowDialog() == DialogResult.OK) { - if (_storageCollection.SaveData(saveFileDialog.FileName)) + try { + _storageCollection.SaveData(saveFileDialog.FileName); MessageBox.Show("Сохранение прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); } - else + catch(Exception ex) { - MessageBox.Show("Не сохранилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); - } + MessageBox.Show(ex.Message, "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } } @@ -269,14 +270,14 @@ namespace ProjectAirplaneWithRadar { if (openFileDialog.ShowDialog() == DialogResult.OK) { - if (_storageCollection.LoadData(openFileDialog.FileName)) + try { + _storageCollection.LoadData(openFileDialog.FileName); MessageBox.Show("Загрузка прошла успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); - RefreshListBoxItems(); } - else + catch(Exception ex) { - MessageBox.Show("Не сохранилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }