Вы не хотите использовать catch (...) (то есть catch с многоточием), если вы действительно, безусловно, наиболее доказуемы, нуждаетесь в этом.
Причина этого в том, что некоторые компиляторы (Visual C ++ 6, чтобы назвать наиболее распространенными) также превращают ошибки, такие как ошибки сегментации и другие действительно плохие условия, в исключения, которые вы можете с радостью обработать с помощью catch (...). Это очень плохо, потому что вы больше не видите сбоев.
И технически, да, вы также можете поймать деление на ноль (для этого вам нужно будет использовать «StackOverflow»), но вам действительно следует избегать таких делений.
Вместо этого сделайте следующее:
- Если вы действительно знаете, каких исключений ожидать, поймайте эти типы и не более, и
- Если вам нужно выбросить исключения самостоятельно, и вам нужно перехватить все исключения, которые вы выбросите, сделайте эти исключения производными от std :: exception (как предложил Адам Пирс) и поймайте это.