Mam klasę z wieloma metodami i chcę mieć jedną procedurę obsługi wyjątków dla nich wszystkich. Jest tak wiele z tych metod i mają różne parametry, że pisanie try/catch dla każdego z nich byłoby brzydkie.Jedna procedura obsługi wyjątków dla wszystkich wyjątków klasy KLASY
Czy znasz sposób, w jaki mogę to zrobić z obsługą wyjątków w klasie, która obsłuży je wszystkie.
UPDATE:
Wielu z was pyta mnie dlaczego. Powodem jest to, że nazywam źródło danych różnymi metodami. , więc moja klasa ma funkcje getData1, gedData2, getData3, getData4, ...., getDataN. Problem polega na tym, że nie ma możliwości sprawdzenia, czy połączenie jest nadal otwarte, a stworzenie nowego połączenia jest bardzo kosztowne. Próbuję ponownie użyć połączenia i jeśli połączenie z następnym połączeniem nie powiodło się, złapałem to i ponownie się połączę i spróbuję ponownie. Właśnie dlatego potrzebuję tego spróbować/złapać cały blok.
to zrobić dla wszystkich funkcji:
try{
datasource.getData()
}
catch(ConnectionException)
{
datasource.Connect();
datasource.getData()
}
Dzięki
wiem, że to jest stare pytanie, ale chciałem powiedzieć, że chociaż w większości się z odpowiedziami poniżej, które zostały przesłane w dniu zadawania pytania, są chwile, kiedy zdolność ta byłaby bardzo przydatna. Husayt opisał jeden z powyższych i znalazłem to pytanie, ponieważ mam inny scenariusz. Chociaż odpowiedź Jacka Allana nie działa w moim scenariuszu, przegłosowałem go, ponieważ jest on przydatny w innych sytuacjach i jest bardzo inteligentny, IMHO. To powiedziawszy, zanim użyjesz "rozwiązania" Jacka, upewnij się, że nie ma innego sposobu na ukształtowanie kodu, aby uniknąć tego wszystkiego. –
Nie ma takiego mechanizmu - ani nie powinno być, IMHO. Nie jest to zgodne z przepływem sterowania. Nie ma znaczenia, że to, co musisz zrobić, to "brzydkie". Nie ma znaczenia, że rozwiązanie, które zrobiłeś, wymaga napisania dodatkowego kodu. Liczy się to, że będziesz w stanie napisać oprogramowanie, które będzie łatwe do zrozumienia i zachować je później, kiedy ty lub ktoś inny zapomnisz o oryginalnych szczegółach. Jeśli metoda musi coś zrobić, gdy wystąpi wyjątek, MUSI być coś w metodzie, która mówi, co robić. To coś dobrego. – ToolmakerSteve
BTW, przejąłem to pytanie, ponieważ uważam to za WIELKIE pytanie. Jest to uzasadnione i użyteczne dla innych, aby CHCĘ to zrobić. Zrozumienie DLACZEGO nie ma sposobu, aby to zrobić, i zrozumienie, co należy zrobić (co już zrobiłeś, w twoim pytaniu, nawet jeśli ci się nie spodobał wynik), będzie przydatne dla innych. – ToolmakerSteve