Обработка исключений: будет ли родительское исключение класса ловить дочернее исключение тоже


SAXException расширяется на SAXNotRecognizedException, SAXNotSupportedException .

try {
  //do Something
} catch(SAXException e) {}
  catch(ParserConfigurationException pce) {}

Если, скажем, "сделать что-то" имеет некоторый код, который бросает SAXNotRecognizedException or SAXNotSupportedException, и если это происходит, то ничего не должно произойти. Если SAXNotRecognizedException происходит, то ничего не произойдет, так как его пустой блок. Аналогично для ParserConfigurationException. Прямо сейчас, даже если я говорю ничего не делать для ParserConfigurationException, тогда также исключение для Возникает исключение ParserConfigurationException.

Я в основном хочу, чтобы он ничего не делал, когда происходит SAXNotRecognizedException or SAXNotSupportedException.
2 2

2 ответа:

Да родительские исключения также будут перехватывать дочерние исключения. Известный пример-когда вы ловите исключение. Этот блок try будет ловить все виды (дочерние) исключения, такие как NullPointer и т. д.

Если вам нравится ловить только SAXNotRecognizedException или SAXNotSupportedException, лучший способ сделать это, так как Java 7:

try {
  // Do something
} catch(SAXNotRecognizedException | SAXNotSupportedException e) {
  // Do nothing
}

Обратите внимание, что другие SAXExceptions не будут пойманы.