dotnet / dotnet/command-line-api
System.CommandLine silently swallows OperationCanceledException and TaskCanceledException
- Lingua principale
- C#
- Stelle
- 3.7k
- Fork
- 428
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
### Repro
```cs
#:package System.CommandLine@2.0.8
using System.CommandLine;
// This stack trace won't print to the console
Func throwException = parseResult =>
{
throw new OperationCanceledException();
// Also doesn't work:
// throw new TaskCanceledException();
};
// This works as expected.
// Func throwException = parseResult => { throw new Exception(); };
var root = new RootCommand();
root.SetAction(throwException);
var parseResult = root.Parse(args);
return parseResult.Invoke();
// still returns exit code 1
```
`dotnet run Repro.cs`
### Expected behavior
I see the stack trace for the `OperationCanceledException`.
### Actual behavior
There is no output.
### Additional details
As a developer trying to debug why my application crashed with no output, this behavior is frustrating.
If I wanted to exit gracefully (e.g. if the user pressed Ctrl-C), then I would expect to have to catch an exception at some point, instead of System.CommandLine swallowing it for me.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia eseguendo il file fornito Repro.cs con System.CommandLine 2.0.8 e confronta il comportamento di RootCommand.SetAction, Parse e parseResult.Invoke per le eccezioni ordinarie e di annullamento. Traccia il percorso di invocazione per trovare dove OperationCanceledException e TaskCanceledException vengono ignorate. Il lavoro è completo quando le eccezioni di annullamento producono lo stack trace previsto, mentre il comportamento esistente per le eccezioni ordinarie rimane invariato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- csharp
- Ambito
- cli
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 55/100