Wprowadzenie
W dzisiejszym wpisie będę chciał Ci pokazać dość ciekawą bibliotekę – Ben.Demystifier. Może uznasz ją za ciekawostkę, ale jej dodanie i wykorzystywanie nie jest problematyczne czy czasochłonne. A może później ułatwić szukanie błędów i analizowanie logów.
Tytułowy Ben.Demystifier to biblioteka, która zmienia zawartość wygenerowanego stack trace w momencie wystąpienie wyjątku. Na przestrzeni 20 lat istnienia C# Microsoft dodawał nowe funkcjonalności do języka, z czasem stos wywołań dość mocno się rozrósł i pojawiło się sporo niepotrzebnych rzeczy. Ben.Demystifier ma za zadanie przenieść stack trace do czasów obecnych.
Ben.Demystifier
W tym wpisie wyjątkowo będę bazował na przykładzie przygotowanym przez twórców biblioteki. Przykład ten bardzo fajnie pokazuje różnicę w klasycznym stack trace oraz tym, co przygotowuje biblioteka. Kod przykładu znajduje się na githubie: (https://github.com/benaadams/Ben.Demystifier/blob/master/sample/StackTrace/Program.cs). Poniżej znajdziesz jego wersję, którą przygotowałem w dotnetfiddle.
Na poniższym obrazku z wynikiem działania przykładu widać różnicę w wygenerowanym stosie wywołań:
Na pierwszy rzut oka da się zauważyć, że stos wywołań jest krótszy, zawiera mniej linijek. Dodatkowo widać również typ wyniku poszczególnych metod, na przykład void Pogram.Main na samym dole stosu.
Metody asynchroniczne (te z wykorzystaniem słów kluczowych async/await) również są fajniej zapisane w stosie wywołań. Po pierwsze nie ma dodatkowych linijek z obsługą klasy Task oraz sama metoda jest ładnie oznaczona słowem kluczowym async.
Biblioteka ma dodatkowo wsparcie dla enumeratorów, method lambda, parametrów generycznych, in, out, ref, konstruktorów i jeszcze kilku innych aspektów. Najlepiej przejrzeć sobie dokładną listę na stronie projektu: https://github.com/benaadams/Ben.Demystifier
Samo użycie biblioteki jest dość proste. Instalujemy ją z nugeta, a później korzystamy z metody Demystify:
exception.Demystify()
Poniżej jest osadzony przykład z githuba biblioteki. Możesz się nim pobawić i zobaczyć w praktyce działanie biblioteki:
Podsumowanie
Mam nadzieje, że biblioteka Ben.Demystifier przypadła Ci do gustu i zaczniesz jej używać w swoich projektach. Osobiście pracuje mi się lepiej z stack trace z tej biblioteki, niż z domyślnym z .NET.
A jaka jest Twoja opinia?
1 thought on “Ben.Demystifier – przyjemny stack trace”