Jedynym Sposób, w jaki mogłaby działać metoda System.String.TryFormat
, polegałby na wychwytywaniu wyjątków, które mogą być wyrzucane z różnych implementacji IFormattable.ToString
(chociaż String.TryFormat
może zastąpić niektóre z własnych wyjątków zwracaniem flagi z błędem, czyniąc to, nie dopuszczając wyjątków od TryFormat
bądź bardzo pomocny).
Jeszcze gorzej, metoda TryFormat
nie wiedziałaby, czy którekolwiek z wyjątków wyrzuconych przez IFormattable.ToString
mogą być rzeczami, które nie powinny zostać przechwycone. Nawet jeśli umowa IFormattable.ToString
wymagała, aby implementacje nie wyciekły niczego poza FormatException
, jeśli specyfikator formatu był nieprawidłowy, prawdopodobnie potrzebowalibyśmy metody zwracającej fałsz (zamiast rzucania), gdyby niektóre z obiektów wejściowych były nieprawidłowe, ale próbowały je sformatować nic nie pogorszyło, podczas gdy wyciekł wyjątek, gdyby sam proces formatowania przedmiotów spowodował korupcję. Niestety, sposób konfigurowania hierarchii wyjątków nie jest możliwy, aby String.TryFormat
mogło zacząć się zbliżać do takiej semantyki.
Po prostu nie ma wiele możliwości, aby metoda String.TryFormat
mogła zrobić coś innego niż użycie bloku try
/catch
w celu tłumienia wyjątków zgłaszanych przez metody wewnętrzne. Istnieje normalna implikacja, że metody powinny działać lepiej w przypadku niepowodzenia, niż byłoby to rutyną konsumencką, która właśnie wykonała XX
w bloku try-catch. Jeśli metoda TryFormat
po prostu zadziała, dławiąc wyjątki, może równie dobrze pozwolić konsumentowi na takie rozwiązanie.
Co znalazłeś w [dokumentach MSDN] (http://msdn.microsoft.com/en-us/library/system.string_methods.aspx)? (Zakładam, że mówisz tutaj o środowisku wykonawczym .Net, chociaż tak naprawdę nie powiedziałeś ...) –
tak, powinienem wspomnieć, że ia m mówi o środowisku wykonawczym .Net. Ale nie znalazłem tego, czego potrzebuję w dokumentach MSDN. –
Co to jest, co próbujesz zrobić? Wygląda na to, że używasz ciężkiego rozwiązania, gdy jest prawdopodobnie lepszy sposób na zrobienie tego. – Enigmativity