fix: safeManager error handeling & Load fix

This commit is contained in:
2026-02-19 08:25:07 +01:00
parent e431a05124
commit 96d9334b56
3 changed files with 85 additions and 39 deletions

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using System.Linq.Expressions;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -18,10 +19,14 @@ namespace CarManagerV3
public static void InitializeImageFolder() public static void InitializeImageFolder()
{ {
string path = "images"; string path = "images";
if (!System.IO.Directory.Exists(path)) if (!System.IO.Directory.Exists(path))
{ {
System.IO.Directory.CreateDirectory(path); System.IO.Directory.CreateDirectory(path);
} }
// Do not catch here. If we cannot create our images folder, the program wont work.
} }
/// <summary> /// <summary>
@@ -47,15 +52,18 @@ namespace CarManagerV3
FetchImage(car); FetchImage(car);
string path = GetImagePath(car); string path = GetImagePath(car);
// does image exist? // does image exist?
if (System.IO.File.Exists(path)) try
{ {
return Image.FromFile(path); if (System.IO.File.Exists(path))
{
return Image.FromFile(path);
}
} }
else catch (Exception ex)
{ {
return Image.FromFile("images/no_image_available.png"); Console.Error.WriteLine($"Error loading image: {ex.Message}");
} }
return Image.FromFile("images/no_image_available.png");
} }
/// <summary> /// <summary>

View File

@@ -27,6 +27,7 @@ namespace CarManagerV3
} }
SafeManager.InitializeFile(filepath); SafeManager.InitializeFile(filepath);
StateManager.setFilePath(filepath);
List<Car> _cars = SafeManager.ReadCars(filepath); List<Car> _cars = SafeManager.ReadCars(filepath);
refreshCars(_cars); refreshCars(_cars);

View File

@@ -24,14 +24,22 @@ namespace CarManagerV3
/// <param name="path">The path.</param> /// <param name="path">The path.</param>
public static void InitializeFile(string path) public static void InitializeFile(string path)
{ {
if (!File.Exists(@path)) try
{ {
using (StreamWriter writer = new StreamWriter(@path)) if (!File.Exists(@path))
{ {
// Create the file, empty using (StreamWriter writer = new StreamWriter(@path))
writer.WriteLine(); {
// Create the file, empty
writer.WriteLine();
writer.Close();
}
} }
} }
catch (Exception ex)
{
Console.Error.WriteLine($"Error initializing file: {ex.Message}");
}
} }
/// <summary> /// <summary>
@@ -44,15 +52,22 @@ namespace CarManagerV3
public static List<Car> ReadCars(string path) public static List<Car> ReadCars(string path)
{ {
List<Car> cars = new List<Car>(); List<Car> cars = new List<Car>();
using (StreamReader reader = new StreamReader(@path)) try
{ {
string line; using (StreamReader reader = new StreamReader(@path))
while ((line = reader.ReadLine()) != null)
{ {
// Process the line string line;
if (line == "") continue; while ((line = reader.ReadLine()) != null)
cars.Add(Car.FromCsvString(line)); {
// Process the line
if (line == "") continue;
cars.Add(Car.FromCsvString(line));
}
reader.Close();
} }
} catch (Exception ex)
{
Console.Error.WriteLine($"Error reading cars from file: {ex.Message}");
} }
return cars; return cars;
} }
@@ -64,12 +79,19 @@ namespace CarManagerV3
/// <param name="cars">A <see cref="List{Car}"/> containing all cars to save.</param> /// <param name="cars">A <see cref="List{Car}"/> containing all cars to save.</param>
public static void SaveCars(string path, List<Car> cars) public static void SaveCars(string path, List<Car> cars)
{ {
using (StreamWriter writer = new StreamWriter(@path)) try
{ {
foreach (Car car in cars) using (StreamWriter writer = new StreamWriter(@path))
{ {
writer.WriteLine(car.ToCsvString()); foreach (Car car in cars)
{
writer.WriteLine(car.ToCsvString());
}
writer.Close();
} }
} catch (Exception ex)
{
Console.Error.WriteLine($"Error saving cars to file: {ex.Message}");
} }
} }
@@ -83,29 +105,37 @@ namespace CarManagerV3
public static void AddRecentPath(string path) public static void AddRecentPath(string path)
{ {
List<string> paths = new List<string>(); List<string> paths = new List<string>();
if (File.Exists(recentPathsFile)) try
{ {
using (StreamReader reader = new StreamReader(recentPathsFile)) if (File.Exists(recentPathsFile))
{ {
string line; using (StreamReader reader = new StreamReader(recentPathsFile))
while ((line = reader.ReadLine()) != null)
{ {
paths.Add(line); string line;
while ((line = reader.ReadLine()) != null)
{
paths.Add(line);
}
reader.Close();
} }
} }
} paths.Remove(path);
paths.Remove(path); paths.Insert(0, path);
paths.Insert(0, path); if (paths.Count > 5)
if (paths.Count > 5)
{
paths = paths.Take(5).ToList();
}
using (StreamWriter writer = new StreamWriter(recentPathsFile))
{
foreach (string p in paths)
{ {
writer.WriteLine(p); paths = paths.Take(5).ToList();
} }
using (StreamWriter writer = new StreamWriter(recentPathsFile))
{
foreach (string p in paths)
{
writer.WriteLine(p);
}
writer.Close();
}
} catch (Exception ex)
{
Console.Error.WriteLine($"Error managing recent paths: {ex.Message}");
} }
} }
@@ -118,16 +148,23 @@ namespace CarManagerV3
public static List<string> GetRecentPaths() public static List<string> GetRecentPaths()
{ {
List<string> paths = new List<string>(); List<string> paths = new List<string>();
if (File.Exists(recentPathsFile)) try
{ {
using (StreamReader reader = new StreamReader(recentPathsFile)) if (File.Exists(recentPathsFile))
{ {
string line; using (StreamReader reader = new StreamReader(recentPathsFile))
while ((line = reader.ReadLine()) != null)
{ {
paths.Add(line); string line;
while ((line = reader.ReadLine()) != null)
{
paths.Add(line);
}
reader.Close();
} }
} }
} catch (Exception ex)
{
Console.Error.WriteLine($"Error reading recent paths: {ex.Message}");
} }
return paths; return paths;
} }