Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.help > #622

Re: Some same exceptions used in a given file

From Lew <noone@lewscanon.com>
Newsgroups comp.lang.java.help
Subject Re: Some same exceptions used in a given file
Date 2011-04-23 18:22 -0400
Organization albasani.net
Message-ID <iovjf9$ieq$1@news.albasani.net> (permalink)
References <87r58s28w3.fsf@merciadriluca-station.MERCIADRILUCA> <iov6eu$ps5$1@dont-email.me> <871v0smxvr.fsf@merciadriluca-station.MERCIADRILUCA>

Show all headers | View raw


On 04/23/2011 06:00 PM, Merciadri Luca wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Eric Sosman<esosman@ieee-dot-org.invalid>  writes:
>
>> On 4/23/2011 1:08 PM, Merciadri Luca wrote:
>>> In some of my code files, I've got the following catch block
>>>
>>> ==
>>>           catch (IOException cantOpenFile)
>>>               {
>>>                   System.err.println("Can't open " + inputFilename + ".");
>>>                   System.exit(1);
>>>               }
>>> ==
>>> more than once, but at different places in the file. Is it possible to
>>> define this somewhere so that I can directly catch the exception with
>>> the two given commands? (Just as one would define his own exception.)
>>
>>      Could you give an example of what you're trying to do?  (The
>> above isn't sufficiently informative.)
>
> Thanks for the answers. Sure I can provide more details. Let us
> consider the following constructor:
>
> ==
>     public FileStream ()
>      {
>          try
>              {
>                  outputFile = new BufferedWriter(new FileWriter("hello.txt"));
>              }
>          catch (IOException cantWriteInFile)
>              {
>                  System.out.println("Impossible to write (in) hello.txt.");
>                  System.exit(1);
>              }
>      }
> ==
> You saw that I had to catch an IOException, as expected when dealing
> with a BufferedWriter.
>
> Now, in a function of the same class of the constructor (class
> FileStream), I need to write in the output file. As a result, I've got
>
> ==
> public void write (String outputText)
> {
>          try
>              {
>                  outputFile.write(outputText);
>                  outputFile.close();
>              }
>          catch (IOException cantWriteInFile)
>              {
>                  System.out.println("Impossible to write (in) hello.txt.");
>                  System.exit(1);
>              }
> }
> ==
>
> You directly notice that the two catch blocks are identical. As a
> result, I'd like to do something like this (in pseudocode):
>
> ==
>    public FileStream ()
>      {
>          try
>              {
>                  outputFile = new BufferedWriter(new FileWriter("hello.txt"));
>              }
>          catch (IOException cantWriteInFile);
>      }
> ==
> then, later in the file:
>
> ==
> public void write (String outputText)
> {
>          try
>              {
>                  outputFile.write(outputText);
>                  outputFile.close();
>              }
>          catch (IOException cantWriteInFile);
> }
> ==
> where IOException cantWriteInFile is defined in the class as
>
> ==
>                  System.out.println("Impossible to write (in) hello.txt.");
>                  System.exit(1);
> ==
>
> Is there a way to do this? It looks terribly bad to have the same
> catch code in two different methods.

Not really, and not at all in the fashion you're requesting.

You do NOT want to put 'System.exit()' in a 'catch' block.  I thought we'd 
made that clear already.  Do you attend to the answers we give you?  I wish 
you would, please.

You especially don't want to call 'System.exit()' from within a constructor. 
Pay attention, now.

Some people try putting a "common" method in the 'catch' block that logs, 
closes and exits, but that's a TERRIBLE practice.  Among other things, it 
defeats the compiler's analysis of "definitely (un)assigned".

The problem is that these are different 'IOException's, that is, they have to 
be caught at wildly different times.

As another respondent indicated in another thread, you can do things like what 
you're asking with aspect-oriented programming (AOP).  Sometimes when you 
think about the answers you've been given you can find answers to questions 
you hadn't considered earlier.  It pays HUGE dividends to ponder each answer, 
googling for unfamiliar terms and supplementing with your own effort at 
research and review of materials proffered.

If you don't revuew the advice, why ask for it?

-- 
Lew
Honi soit qui mal y pense.
http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg

Back to comp.lang.java.help | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Some same exceptions used in a given file Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> - 2011-04-23 19:08 +0200
  Re: Some same exceptions used in a given file Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-04-23 14:40 -0400
    Re: Some same exceptions used in a given file Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-04-23 16:23 -0400
    Re: Some same exceptions used in a given file Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-04-23 17:23 -0300
    Re: Some same exceptions used in a given file Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> - 2011-04-24 00:00 +0200
      Re: Some same exceptions used in a given file Lew <noone@lewscanon.com> - 2011-04-23 18:22 -0400
      Re: Some same exceptions used in a given file Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-04-23 18:31 -0400
        Re: Some same exceptions used in a given file Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> - 2011-04-24 01:20 +0200
          Re: Some same exceptions used in a given file Lew <noone@lewscanon.com> - 2011-04-23 20:19 -0400
      Re: Some same exceptions used in a given file Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-04-23 22:25 -0300
        Re: Some same exceptions used in a given file Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> - 2011-04-24 09:24 +0200
  Re: Some same exceptions used in a given file Patricia Shanahan <pats@acm.org> - 2011-04-23 13:48 -0700
    Re: Some same exceptions used in a given file Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> - 2011-04-24 09:34 +0200
      Re: Some same exceptions used in a given file Lew <noone@lewscanon.com> - 2011-04-24 09:40 -0400
      Re: Some same exceptions used in a given file Patricia Shanahan <pats@acm.org> - 2011-04-24 06:53 -0700
  Re: Some same exceptions used in a given file Merciadri Luca <Luca.Merciadri@student.ulg.ac.be> - 2011-04-24 01:28 +0200

csiph-web