diff --git a/AirBomber/AirBomber/AirplaneNotFoundException.cs b/AirBomber/AirBomber/AirplaneNotFoundException.cs
index 7d52782..727b520 100644
--- a/AirBomber/AirBomber/AirplaneNotFoundException.cs
+++ b/AirBomber/AirBomber/AirplaneNotFoundException.cs
@@ -1,6 +1,6 @@
using System.Runtime.Serialization;
-namespace Cars
+namespace AirBomber
{
[Serializable]
internal class AirplaneNotFoundException : ApplicationException
diff --git a/AirBomber/AirBomber/FormMapWithSetAirplanes.cs b/AirBomber/AirBomber/FormMapWithSetAirplanes.cs
index 536dc8a..a513942 100644
--- a/AirBomber/AirBomber/FormMapWithSetAirplanes.cs
+++ b/AirBomber/AirBomber/FormMapWithSetAirplanes.cs
@@ -115,19 +115,27 @@ namespace AirBomber
///
private void AddAirplane(DrawningAirplane airplane)
{
- if (listBoxMaps.SelectedIndex == -1)
+ try
{
- MessageBox.Show("Перед добавлением объекта необходимо создать карту");
+ if (listBoxMaps.SelectedIndex == -1)
+ {
+ MessageBox.Show("Перед добавлением объекта необходимо создать карту");
+ }
+ else if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + new DrawningObject(airplane) != -1)
+ {
+ MessageBox.Show("Объект добавлен");
+ pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
+ }
+ else
+ {
+ MessageBox.Show("Не удалось добавить объект");
+ }
}
- else if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + new DrawningObject(airplane) != -1)
+ catch (StorageOverflowException ex)
{
- MessageBox.Show("Объект добавлен");
- pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
- }
- else
- {
- MessageBox.Show("Не удалось добавить объект");
+ MessageBox.Show($"Ошибка переполнения хранилища: {ex.Message}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
+
}
///
/// Удаление объекта
@@ -142,15 +150,23 @@ namespace AirBomber
return;
}
int pos = Convert.ToInt32(maskedTextBoxPosition.Text);
- if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] - pos != null)
+ try
{
- MessageBox.Show("Объект удален");
- pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
+ if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] - pos != null)
+ {
+ MessageBox.Show("Объект удален");
+ pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
+ }
+ else
+ {
+ MessageBox.Show("Не удалось удалить объект");
+ }
}
- else
+ catch (AirplaneNotFoundException ex)
{
- MessageBox.Show("Не удалось удалить объект");
+ MessageBox.Show($"Ошибка удаления: {ex.Message}");
}
+
}
///
/// Вывод набора
@@ -219,13 +235,14 @@ namespace AirBomber
{
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
- if(_mapsCollection.SaveData(saveFileDialog.FileName))
+ try
{
+ _mapsCollection.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);
}
}
}
@@ -238,14 +255,15 @@ namespace AirBomber
{
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
- if (_mapsCollection.LoadData(openFileDialog.FileName))
+ try
{
+ _mapsCollection.LoadData(openFileDialog.FileName);
MessageBox.Show("Открытие прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);
ReloadMaps();
}
- else
+ catch (Exception ex)
{
- MessageBox.Show("Не удалось открыть", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ MessageBox.Show($"Не удалось открыть: {ex.Message}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
diff --git a/AirBomber/AirBomber/MapsCollection.cs b/AirBomber/AirBomber/MapsCollection.cs
index 633c36d..e6e448f 100644
--- a/AirBomber/AirBomber/MapsCollection.cs
+++ b/AirBomber/AirBomber/MapsCollection.cs
@@ -84,8 +84,7 @@ namespace AirBomber
/// Сохранение информации по самолетам в хранилище в файл
///
/// Путь и имя файла
- ///
- public bool SaveData(string filename)
+ public void SaveData(string filename)
{
if (File.Exists(filename))
{
@@ -99,18 +98,17 @@ namespace AirBomber
fs.Write($"{storage.Key}{separatorDict}{storage.Value.GetData(separatorDict, separatorData)}{Environment.NewLine}");
}
}
- return true;
}
///
/// Загрузка информации по самолетам в ангарах из файла
///
///
///
- public bool LoadData(string filename)
+ public void LoadData(string filename)
{
if (!File.Exists(filename))
{
- return false;
+ throw new Exception("Файл не найден");
}
List strs = new List();
using (StreamReader fs = new(filename))
@@ -123,7 +121,7 @@ namespace AirBomber
if (!strs[0].Contains("MapsCollection"))
{
//если нет такой записи, то это не те данные
- return false;
+ throw new Exception("Формат данных в файле не правильный");
}
//очищаем записи
_mapStorages.Clear();
@@ -145,7 +143,6 @@ namespace AirBomber
_mapStorages[elem[0]].LoadData(elem[2].Split(separatorData,
StringSplitOptions.RemoveEmptyEntries));
}
- return true;
}
}
}
diff --git a/AirBomber/AirBomber/SetAirplanesGeneric.cs b/AirBomber/AirBomber/SetAirplanesGeneric.cs
index c3a054a..6dfc51e 100644
--- a/AirBomber/AirBomber/SetAirplanesGeneric.cs
+++ b/AirBomber/AirBomber/SetAirplanesGeneric.cs
@@ -54,6 +54,8 @@ namespace AirBomber
/// Возвращает позицию вставленного объекта, либо -1 если его не удалось вставить
public int Insert(T airplane, int position)
{
+ if (position == _maxcount)
+ throw new StorageOverflowException();
if (!isCorrectPosition(position))
{
return -1;
@@ -70,7 +72,9 @@ namespace AirBomber
{
if (!isCorrectPosition(position))
return null;
- var result = _places[position];
+ var result = this[position];
+ if (result == null)
+ throw new AirplaneNotFoundException();
_places.RemoveAt(position);
return result;
}
diff --git a/AirBomber/AirBomber/StorageOverflowException.cs b/AirBomber/AirBomber/StorageOverflowException.cs
index 4cf74a6..1701690 100644
--- a/AirBomber/AirBomber/StorageOverflowException.cs
+++ b/AirBomber/AirBomber/StorageOverflowException.cs
@@ -1,6 +1,6 @@
using System.Runtime.Serialization;
-namespace Cars
+namespace AirBomber
{
[Serializable]
internal class StorageOverflowException : ApplicationException