diff --git a/src/Azure/Azure.Quantum.Client/Exceptions/AzureQuantumException.cs b/src/Azure/Azure.Quantum.Client/Exceptions/AzureQuantumException.cs index 734827ab73f..2a691d4bf75 100644 --- a/src/Azure/Azure.Quantum.Client/Exceptions/AzureQuantumException.cs +++ b/src/Azure/Azure.Quantum.Client/Exceptions/AzureQuantumException.cs @@ -7,9 +7,19 @@ namespace Microsoft.Azure.Quantum.Exceptions { public class AzureQuantumException : Exception { - public AzureQuantumException(string message = "An exception related to the Azure quantum service or storage occurred.") + public AzureQuantumException() + : base("An exception related to the Azure quantum occurred.") + { + } + + public AzureQuantumException(string message) : base(message) { } + + public AzureQuantumException(string message, Exception inner) + : base(message, inner) + { + } } } diff --git a/src/Simulation/Common/Exceptions/QuantumProcessorTranslationException.cs b/src/Simulation/Common/Exceptions/QuantumProcessorTranslationException.cs index 5ef32c382dd..3ba8df02673 100644 --- a/src/Simulation/Common/Exceptions/QuantumProcessorTranslationException.cs +++ b/src/Simulation/Common/Exceptions/QuantumProcessorTranslationException.cs @@ -7,9 +7,19 @@ namespace Microsoft.Quantum.Simulation.Common.Exceptions { public class QuantumProcessorTranslationException : Exception { - public QuantumProcessorTranslationException(string message = "An exception occurred while performing a translation on a quantum processor.") + public QuantumProcessorTranslationException() + : base("An exception occurred while performing a translation on a quantum processor.") + { + } + + public QuantumProcessorTranslationException(string message) : base(message) { } + + public QuantumProcessorTranslationException(string message, Exception inner) + : base(message, inner) + { + } } } diff --git a/src/Simulation/EntryPointDriver/Azure.cs b/src/Simulation/EntryPointDriver/Azure.cs index 6f6f14d0335..40a0ad01e44 100644 --- a/src/Simulation/EntryPointDriver/Azure.cs +++ b/src/Simulation/EntryPointDriver/Azure.cs @@ -5,7 +5,9 @@ using System.CommandLine.Parsing; using System.Threading.Tasks; using Microsoft.Azure.Quantum; +using Microsoft.Azure.Quantum.Exceptions; using Microsoft.Quantum.Runtime; +using Microsoft.Quantum.Simulation.Common.Exceptions; using static Microsoft.Quantum.CsharpGeneration.EntryPointDriver.Driver; namespace Microsoft.Quantum.CsharpGeneration.EntryPointDriver @@ -54,9 +56,35 @@ internal static async Task Submit( } else { - var job = await machine.SubmitAsync( - entryPoint.Info, input, new SubmissionContext { Shots = settings.Shots }); - DisplayJob(job, settings.Output); + try + { + var job = await machine.SubmitAsync( + entryPoint.Info, input, new SubmissionContext { Shots = settings.Shots }); + DisplayJob(job, settings.Output); + } + catch (AzureQuantumException azureQuantumEx) + { + DisplayWithColor( + ConsoleColor.Red, + Console.Error, + "Something went wrong when submitting the program to the Azure Quantum service."); + + Console.Error.WriteLine(); + Console.Error.WriteLine(azureQuantumEx.Message); + return 1; + } + catch (QuantumProcessorTranslationException translationEx) + { + DisplayWithColor( + ConsoleColor.Red, + Console.Error, + "Something went wrong when performing translation to the intermediate representation used by the target quantum machine."); + + Console.Error.WriteLine(); + Console.Error.WriteLine(translationEx.Message); + return 1; + } + return 0; } }