Dołączam plik nagłówkowy innej firmy. Posiada funkcje, które mogą/nie mogą powodować wyjątki. W moim kodzie źródłowym, w jaki sposób określić, które wyjątki mogą być wyrzucane z tego pliku? To było pytanie do wywiadu. Moją odpowiedzią były deklaracje funkcji i szukanie specyfikacji wyjątku. To może dać nam jakąś wskazówkę. Czy istnieje inny sposób przewidywania wyjątków, które można rzucać?Jak mogę odgadnąć wszystkie możliwe wyjątki, które mogą być zgłaszane w C++?
5
A
Odpowiedz
3
ten ma kilka aspektów:
- Jeśli wyjątki są zgłaszane do funkcji, tylko te (i Klasy pochodne, oczywiście), ewentualnie mogą być rzucane, wszyscy inni spowoduje zakończenie programu.
- Nawet jeśli wyjątki są zadeklarowane dla funkcji, nie każdy kompilator faktycznie wymusza tę regułę.
- Jeśli żadne wyjątki (nie pusty zestaw wyjątków!) Są zadeklarowane dla funkcji, wszystko może zostać rzucone.
- Rozsądny kod nigdy nie wyrzuci niczego, co nie pochodzi od
std::exception
, więc założenie, że lub wyprowadzony typ jest rzucany jest dobrym podejściem. - Dobry kod będzie dokumentował obsługę błędów, chociaż należy domyślnie spodziewać się, że
std::bad_alloc
pochodzi z dowolnej funkcji alokującej pamięć.
+0
Niestety istnieje wiele nierozsądnych kodów tam. W związku z tym dlaczego catch-all może być przydatny, nawet jeśli jest to również zazwyczaj znak facepalm również jest konieczne. –
Powiązane problemy
- 1. Selektywnie ignoruj zgłaszane wyjątki w kodzie C#
- 2. Cienkie rzadko zgłaszane wyjątki szablonów
- 3. Jak obsłużyć wyjątki zgłaszane podczas renderowania widoku w Spring MVC?
- 4. Jak wychwycić wszystkie wyjątki, które mogą wystąpić w działaniu kontrolera Symfony2?
- 5. Array, które mogą być accesed używając array [ 'name'] w C#
- 6. Które klasy nie mogą być poddane podklasie?
- 7. Co wyjątki mogą być podnoszone przez Action Mailer
- 8. Jak iterować strumień, nawet jeśli są zgłaszane wyjątki?
- 9. Castle Windsor: tłumi wyjątki zgłaszane przez Resolve()
- 10. Rozszerzenia języka ruby: Jak mogę przechwytywać wszystkie wyjątki, w tym te, które nie są standardowymi błędami?
- 11. Jak mogę uchwycić wszystkie wyjątki z aplikacji wxPython?
- 12. Jak widzisz, które wyjątki są zgłaszane za pomocą IntelliSense w VS2015?
- 13. Jak usunąć wiersze, które nie mogą być oddane do INT
- 14. Jak mogę przechwycić wszystkie wyjątki w aplikacji na iPhone'a
- 15. Realizacja zadań, które mogą być anulowane w ramach Rygiel (BFTask)
- 16. Czy można przechwytywać wyjątki zgłaszane w wywołaniu asynchronicznym JavaScript?
- 17. Dane sprężyny JPA i parametry, które mogą być wartościami null
- 18. budować programy, które mogą być odprowadzone w node.js
- 19. Jak przechwycić wszystkie wyjątki w kolbie?
- 20. Mockito: jak odgadnąć setter getter
- 21. Które wartości nie mogą być poprawnie odwzorowane przez podwójny
- 22. Jak wychwycić wszystkie wyjątki w netty
- 23. Compiler Error: Wywołanie funkcji z parametrami, które mogą być niebezpieczne
- 24. Dziedzicz wyjątki w C++
- 25. Czy konstruktorzy mogą zgłaszać wyjątki w Javie?
- 26. Metody JavaScript, które nie mogą być wywołane z obiektów jquery?
- 27. Czy konstruktory C++ mogą być szablonami?
- 28. Jak wygenerować wszystkie możliwe kombinacje?
- 29. ListView Elementy, które nie mogą być klikalne z HorizontalScrollView wewnątrz
- 30. Czy istnieje autorytatywne odniesienie do wyjątków, które mogą być wrzucane przez wbudowane funkcje Matlab?
Nie ma innego sposobu. Jeśli twój kod naprawdę nie pozwala na wyjątki (np. Jest to granica modułów), użyj klauzuli catch-all. – StoryTeller
Czy istnieje narzędzie, które można uruchomić, aby to zrozumieć? –
Jedyny ** sposób na poznanie polega na sprawdzeniu kodu źródłowego biblioteki. – QuestionC