From e48722ebe10e407da82733a4fa2e6ea36b3edad2 Mon Sep 17 00:00:00 2001 From: Mukul Palol Date: Tue, 2 Apr 2024 12:45:45 +0530 Subject: [PATCH 1/8] created ProblemStatement.md --- CarAccidentErrorHandling/ProblemStatement.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 CarAccidentErrorHandling/ProblemStatement.md diff --git a/CarAccidentErrorHandling/ProblemStatement.md b/CarAccidentErrorHandling/ProblemStatement.md new file mode 100644 index 0000000..e69de29 From 02bfb93a0b377b0a87fb58e0a590ec1e0841fe9e Mon Sep 17 00:00:00 2001 From: Mukul Palol Date: Tue, 2 Apr 2024 13:23:56 +0530 Subject: [PATCH 2/8] added code files --- CarAccidentErrorHandling/Car.cs | 59 ++++++++++++++++++++++++++ CarAccidentErrorHandling/Exceptions.cs | 22 ++++++++++ CarAccidentErrorHandling/Program.cs | 45 ++++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 CarAccidentErrorHandling/Car.cs create mode 100644 CarAccidentErrorHandling/Exceptions.cs create mode 100644 CarAccidentErrorHandling/Program.cs diff --git a/CarAccidentErrorHandling/Car.cs b/CarAccidentErrorHandling/Car.cs new file mode 100644 index 0000000..e290f6e --- /dev/null +++ b/CarAccidentErrorHandling/Car.cs @@ -0,0 +1,59 @@ +namespace CarAccidentErrorHandling +{ + public class Car + { + public void Start() + { + Console.WriteLine("Car started."); + } + + public void Run() + { + Console.WriteLine("Car is running."); + DrivingScenario scenario = (DrivingScenario)new Random().Next(1, 6); // Simulate random car failure/accident scenarios + switch (scenario) + { + case DrivingScenario.Collision: + throw new CollisionException("Car collided with another vehicle!"); + case DrivingScenario.RoadObstacle: + throw new RoadObstacleException("Car encountered a road obstacle!"); + case DrivingScenario.PedestrianCollision: + throw new PedestrianCollisionException("Car hit a pedestrian!"); + case DrivingScenario.MechanicalFailure: + throw new MechanicalFailureException("Car experienced a mechanical failure!"); + case DrivingScenario.Safe: + Console.WriteLine("Car reached its destination safely."); + break; + } + } + + public void Stop() + { + Console.WriteLine("Car stopped."); + } + + public void Brake() + { + Console.WriteLine("Braking to avoid accident."); + } + + public void Swerve() + { + Console.WriteLine("Swerving to avoid obstacle."); + } + + public void CloseOpenDoorsOrWindows() + { + Console.WriteLine("Closing any open doors or windows"); + } + + public enum DrivingScenario + { + Collision = 1, + RoadObstacle = 2, + PedestrianCollision = 3, + MechanicalFailure = 4, + Safe = 5 + } + } +} diff --git a/CarAccidentErrorHandling/Exceptions.cs b/CarAccidentErrorHandling/Exceptions.cs new file mode 100644 index 0000000..842dade --- /dev/null +++ b/CarAccidentErrorHandling/Exceptions.cs @@ -0,0 +1,22 @@ +namespace CarAccidentErrorHandling +{ + public class CollisionException : Exception + { + public CollisionException(string message) : base(message) { } + } + + public class RoadObstacleException : Exception + { + public RoadObstacleException(string message) : base(message) { } + } + + public class PedestrianCollisionException : Exception + { + public PedestrianCollisionException(string message) : base(message) { } + } + + public class MechanicalFailureException : Exception + { + public MechanicalFailureException(string message) : base(message) { } + } +} diff --git a/CarAccidentErrorHandling/Program.cs b/CarAccidentErrorHandling/Program.cs new file mode 100644 index 0000000..f280387 --- /dev/null +++ b/CarAccidentErrorHandling/Program.cs @@ -0,0 +1,45 @@ +namespace CarAccidentErrorHandling +{ + internal class Program + { + static void Main(string[] args) + { + Car car = new Car(); + try + { + car.Start(); + car.Run(); + } + catch (CollisionException collisionException) + { + Console.WriteLine("Car Accident: " + collisionException.Message); + car.Brake(); + } + catch (RoadObstacleException roadObstaclException) + { + Console.WriteLine("Road Obstacle: " + roadObstaclException.Message); + car.Swerve(); + car.Brake(); + } + catch (PedestrianCollisionException pedestrianException) + { + Console.WriteLine("Pedestrian Accident: " + pedestrianException.Message); + car.Brake(); + } + catch (MechanicalFailureException mechanicalFailureException) + { + Console.WriteLine("Mechanical Failure: " + mechanicalFailureException.Message); + } + catch (Exception exception) + { + Console.WriteLine("An unexpected error occurred: " + exception.Message); + } + finally + { + Console.WriteLine("Attempting to bring the car back to a normal state"); + car.Stop(); + car.CloseOpenDoorsOrWindows(); + } + } + } +} From 19c96239f879c20020839033701a9c7b8dfd226a Mon Sep 17 00:00:00 2001 From: Mukul Palol Date: Tue, 2 Apr 2024 13:31:18 +0530 Subject: [PATCH 3/8] updated ProblemStatement.md --- CarAccidentErrorHandling/ProblemStatement.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CarAccidentErrorHandling/ProblemStatement.md b/CarAccidentErrorHandling/ProblemStatement.md index e69de29..9222a54 100644 --- a/CarAccidentErrorHandling/ProblemStatement.md +++ b/CarAccidentErrorHandling/ProblemStatement.md @@ -0,0 +1,6 @@ +# Assignment - Error Handling in Car Accident Scenario + +![Car accident image on basis of which we have to think of try-catch scenarios.](https://www.oreilly.com/api/v2/epubs/9780136083238/files/images/103fig01.jpg) + +- You have to think about given image and come with scenarios. +- What are the try and catches are occurring into that image. You have to find different kind of exceptions. You have to write them in code with proper sequence. \ No newline at end of file From 5638bcb4a92f0fcd688766be234aac8d6feaaf59 Mon Sep 17 00:00:00 2001 From: Mukul Palol Date: Tue, 2 Apr 2024 13:33:11 +0530 Subject: [PATCH 4/8] updated code files --- CarAccidentErrorHandling/{ => CarAccidentErrorHandling}/Car.cs | 0 .../{ => CarAccidentErrorHandling}/Exceptions.cs | 0 .../{ => CarAccidentErrorHandling}/Program.cs | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename CarAccidentErrorHandling/{ => CarAccidentErrorHandling}/Car.cs (100%) rename CarAccidentErrorHandling/{ => CarAccidentErrorHandling}/Exceptions.cs (100%) rename CarAccidentErrorHandling/{ => CarAccidentErrorHandling}/Program.cs (100%) diff --git a/CarAccidentErrorHandling/Car.cs b/CarAccidentErrorHandling/CarAccidentErrorHandling/Car.cs similarity index 100% rename from CarAccidentErrorHandling/Car.cs rename to CarAccidentErrorHandling/CarAccidentErrorHandling/Car.cs diff --git a/CarAccidentErrorHandling/Exceptions.cs b/CarAccidentErrorHandling/CarAccidentErrorHandling/Exceptions.cs similarity index 100% rename from CarAccidentErrorHandling/Exceptions.cs rename to CarAccidentErrorHandling/CarAccidentErrorHandling/Exceptions.cs diff --git a/CarAccidentErrorHandling/Program.cs b/CarAccidentErrorHandling/CarAccidentErrorHandling/Program.cs similarity index 100% rename from CarAccidentErrorHandling/Program.cs rename to CarAccidentErrorHandling/CarAccidentErrorHandling/Program.cs From 229a4f4a0815a424f58811082f29dcd59aeb2be5 Mon Sep 17 00:00:00 2001 From: Mukul Palol Date: Tue, 2 Apr 2024 13:35:30 +0530 Subject: [PATCH 5/8] updated README.md --- CarAccidentErrorHandling/{ProblemStatement.md => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CarAccidentErrorHandling/{ProblemStatement.md => README.md} (100%) diff --git a/CarAccidentErrorHandling/ProblemStatement.md b/CarAccidentErrorHandling/README.md similarity index 100% rename from CarAccidentErrorHandling/ProblemStatement.md rename to CarAccidentErrorHandling/README.md From 86e51754066131ec4491e77da95f40ba0d033911 Mon Sep 17 00:00:00 2001 From: Mukul Palol Date: Tue, 2 Apr 2024 16:32:05 +0530 Subject: [PATCH 6/8] addressed review comments --- CarAccidentErrorHandling/CarAccidentErrorHandling/Car.cs | 6 +++--- .../CarAccidentErrorHandling/Exceptions.cs | 2 +- .../CarAccidentErrorHandling/Program.cs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CarAccidentErrorHandling/CarAccidentErrorHandling/Car.cs b/CarAccidentErrorHandling/CarAccidentErrorHandling/Car.cs index e290f6e..95906b1 100644 --- a/CarAccidentErrorHandling/CarAccidentErrorHandling/Car.cs +++ b/CarAccidentErrorHandling/CarAccidentErrorHandling/Car.cs @@ -1,4 +1,4 @@ -namespace CarAccidentErrorHandling +namespace CarOperations { public class Car { @@ -42,9 +42,9 @@ public void Swerve() Console.WriteLine("Swerving to avoid obstacle."); } - public void CloseOpenDoorsOrWindows() + public void ResetCarState() { - Console.WriteLine("Closing any open doors or windows"); + Console.WriteLine("Reseting car's state like turn off lights, any indicator or alarms, set gear to neutral, etc.") } public enum DrivingScenario diff --git a/CarAccidentErrorHandling/CarAccidentErrorHandling/Exceptions.cs b/CarAccidentErrorHandling/CarAccidentErrorHandling/Exceptions.cs index 842dade..5181643 100644 --- a/CarAccidentErrorHandling/CarAccidentErrorHandling/Exceptions.cs +++ b/CarAccidentErrorHandling/CarAccidentErrorHandling/Exceptions.cs @@ -1,4 +1,4 @@ -namespace CarAccidentErrorHandling +namespace CarOperations { public class CollisionException : Exception { diff --git a/CarAccidentErrorHandling/CarAccidentErrorHandling/Program.cs b/CarAccidentErrorHandling/CarAccidentErrorHandling/Program.cs index f280387..e1320d5 100644 --- a/CarAccidentErrorHandling/CarAccidentErrorHandling/Program.cs +++ b/CarAccidentErrorHandling/CarAccidentErrorHandling/Program.cs @@ -1,4 +1,4 @@ -namespace CarAccidentErrorHandling +namespace CarOperations { internal class Program { @@ -38,7 +38,7 @@ static void Main(string[] args) { Console.WriteLine("Attempting to bring the car back to a normal state"); car.Stop(); - car.CloseOpenDoorsOrWindows(); + car.ResetCarState(); } } } From 99e843a893053e24c9f1ba7b4ff91a95cce46ea6 Mon Sep 17 00:00:00 2001 From: Mukul Palol Date: Tue, 2 Apr 2024 17:08:47 +0530 Subject: [PATCH 7/8] addressed review comments --- CarAccidentErrorHandling/CarAccidentErrorHandling/Car.cs | 2 +- .../CarAccidentErrorHandling/Exceptions.cs | 2 +- CarAccidentErrorHandling/CarAccidentErrorHandling/Program.cs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CarAccidentErrorHandling/CarAccidentErrorHandling/Car.cs b/CarAccidentErrorHandling/CarAccidentErrorHandling/Car.cs index 95906b1..b023466 100644 --- a/CarAccidentErrorHandling/CarAccidentErrorHandling/Car.cs +++ b/CarAccidentErrorHandling/CarAccidentErrorHandling/Car.cs @@ -1,4 +1,4 @@ -namespace CarOperations +namespace CarAccidentErrorHandling { public class Car { diff --git a/CarAccidentErrorHandling/CarAccidentErrorHandling/Exceptions.cs b/CarAccidentErrorHandling/CarAccidentErrorHandling/Exceptions.cs index 5181643..842dade 100644 --- a/CarAccidentErrorHandling/CarAccidentErrorHandling/Exceptions.cs +++ b/CarAccidentErrorHandling/CarAccidentErrorHandling/Exceptions.cs @@ -1,4 +1,4 @@ -namespace CarOperations +namespace CarAccidentErrorHandling { public class CollisionException : Exception { diff --git a/CarAccidentErrorHandling/CarAccidentErrorHandling/Program.cs b/CarAccidentErrorHandling/CarAccidentErrorHandling/Program.cs index e1320d5..4c2cec7 100644 --- a/CarAccidentErrorHandling/CarAccidentErrorHandling/Program.cs +++ b/CarAccidentErrorHandling/CarAccidentErrorHandling/Program.cs @@ -1,6 +1,6 @@ -namespace CarOperations +namespace CarAccidentErrorHandling { - internal class Program + internal class CarOperator { static void Main(string[] args) { From 1f7c65d4c063a1a4ec6e2603d91eec0dc575623e Mon Sep 17 00:00:00 2001 From: Mukul Palol Date: Tue, 2 Apr 2024 17:11:06 +0530 Subject: [PATCH 8/8] addressed review comments --- .../CarAccidentErrorHandling/{Program.cs => CarOperator.cs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CarAccidentErrorHandling/CarAccidentErrorHandling/{Program.cs => CarOperator.cs} (100%) diff --git a/CarAccidentErrorHandling/CarAccidentErrorHandling/Program.cs b/CarAccidentErrorHandling/CarAccidentErrorHandling/CarOperator.cs similarity index 100% rename from CarAccidentErrorHandling/CarAccidentErrorHandling/Program.cs rename to CarAccidentErrorHandling/CarAccidentErrorHandling/CarOperator.cs