Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6943289

Project Coin: Improved Exception Handling for Java (aka 'multicatch')

XMLWordPrintable

    • b94
    • unknown
    • generic
    • Verified

      This proposal is structured into two different parts:

      *) Catching multiple exception types: A single catch clause can now catch
         more than one exception types, enabling a series of otherwise identical
         catch clauses to be written as a single catch clause.

      *) Improved checking for rethrown exceptions: Previously, rethrowing an
         exception was treated as throwing the type of the catch parameter. Now,
         when a catch parameter is declared final, rethrowing the exception is known
         statically to throw only those checked exception types that were thrown in
         the try block, are a subtype of the catch parameter type, and not caught in
         preceding catch clauses.

      EXAMPLE (multicatch):

      before:

      try {
          doWork(file);
      } catch (IOException ex) {
          logger.log(ex);
      } catch (SQLException ex) {
          logger.log(ex);
      }

      after:

      try {
          doWork(file);
      } catch (final IOException|SQLException ex) {
          logger.log(ex);
      }

      EXAMPLE (rethrow)

      before

      void m() throws IOException, SQLException {
      try {
         doWork(file);
      } catch (IOException) {
          logger.log(ex);
      } catch (SQLException ex) {
          logger.log(ex);
          throw ex; //rethrows IOException,SQLException
      }
      }

      after:

      void m() throws SQLException {
      try {
         doWork(file);
      } catch (IOException) {
          logger.log(ex);
      } catch (final SQLException ex) {
          logger.log(ex);
          throw ex; //rethrows SQLException
      }
      }

            mcimadamore Maurizio Cimadamore
            mcimadamore Maurizio Cimadamore
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: