Handling File.open exceptions

Discussion in 'Ruby' started by Carl Jenkins, Jul 1, 2010.

  1. Carl Jenkins

    Carl Jenkins Guest

    I was reading the pick axe book (for 1.9 version of ruby) and on page
    155 it talks about exception handling.

    More specifically, it says that beginners usually make the mistake of
    putting File.open in the begin end block.

    Now, I am a ruby newbie but, how do you handle exceptions for File.open
    if it is not in the begin block? Do I put File.open in its own begin
    block?
    --
    Posted via http://www.ruby-forum.com/.
    Carl Jenkins, Jul 1, 2010
    #1
    1. Advertising

  2. On 01.07.2010 22:24, Carl Jenkins wrote:
    > I was reading the pick axe book (for 1.9 version of ruby) and on page
    > 155 it talks about exception handling.
    >
    > More specifically, it says that beginners usually make the mistake of
    > putting File.open in the begin end block.
    >
    > Now, I am a ruby newbie but, how do you handle exceptions for File.open
    > if it is not in the begin block? Do I put File.open in its own begin
    > block?


    Does this help?

    http://blog.rubybestpractices.com/posts/rklemme/001-Using_blocks_for_Robustness.html

    Kind regards

    robert

    --
    remember.guy do |as, often| as.you_can - without end
    http://blog.rubybestpractices.com/
    Robert Klemme, Jul 1, 2010
    #2
    1. Advertising

  3. Carl Jenkins

    Carl Jenkins Guest

    Robert Klemme wrote:
    > On 01.07.2010 22:24, Carl Jenkins wrote:
    >> I was reading the pick axe book (for 1.9 version of ruby) and on page
    >> 155 it talks about exception handling.
    >>
    >> More specifically, it says that beginners usually make the mistake of
    >> putting File.open in the begin end block.
    >>
    >> Now, I am a ruby newbie but, how do you handle exceptions for File.open
    >> if it is not in the begin block? Do I put File.open in its own begin
    >> block?

    >
    > Does this help?
    >
    > http://blog.rubybestpractices.com/posts/rklemme/001-Using_blocks_for_Robustness.html
    >
    > Kind regards
    >
    > robert


    Yes - thanks that does help.

    But, I have to be honest it seems a bit strange to not have to use
    exception handling. Especially, when coming from the Java way of doing
    things.
    --
    Posted via http://www.ruby-forum.com/.
    Carl Jenkins, Jul 2, 2010
    #3
  4. On 07/02/2010 03:08 AM, Carl Jenkins wrote:
    > Robert Klemme wrote:
    >> On 01.07.2010 22:24, Carl Jenkins wrote:
    >>> I was reading the pick axe book (for 1.9 version of ruby) and on page
    >>> 155 it talks about exception handling.
    >>>
    >>> More specifically, it says that beginners usually make the mistake of
    >>> putting File.open in the begin end block.
    >>>
    >>> Now, I am a ruby newbie but, how do you handle exceptions for File.open
    >>> if it is not in the begin block? Do I put File.open in its own begin
    >>> block?

    >>
    >> Does this help?
    >>
    >> http://blog.rubybestpractices.com/posts/rklemme/001-Using_blocks_for_Robustness.html
    >>

    >
    > Yes - thanks that does help.


    Good.

    > But, I have to be honest it seems a bit strange to not have to use
    > exception handling. Especially, when coming from the Java way of doing
    > things.


    You still need to handle the exception somewhere unless you want to let
    it terminate the program. It's just the file handle closing that is
    ensured to be done under all circumstances. And btw you can do the
    similar things in Java with a finally block - it's just awfully more
    verbose. And even Java has unchecked exceptions (everything that
    inherits Error and RuntimeException).

    I've also written another article how to write methods like File.open
    yourself:
    http://blog.rubybestpractices.com/posts/rklemme/002_Writing_Block_Methods.html

    Kind regards

    robert

    --
    remember.guy do |as, often| as.you_can - without end
    http://blog.rubybestpractices.com/
    Robert Klemme, Jul 2, 2010
    #4
  5. Carl Jenkins

    Carl Jenkins Guest

    Robert Klemme wrote:
    > On 07/02/2010 03:08 AM, Carl Jenkins wrote:
    >>>> block?
    >>>
    >>> Does this help?
    >>>
    >>> http://blog.rubybestpractices.com/posts/rklemme/001-Using_blocks_for_Robustness.html
    >>>

    >>
    >> Yes - thanks that does help.

    >
    > Good.
    >
    >> But, I have to be honest it seems a bit strange to not have to use
    >> exception handling. Especially, when coming from the Java way of doing
    >> things.

    >
    > You still need to handle the exception somewhere unless you want to let
    > it terminate the program. It's just the file handle closing that is
    > ensured to be done under all circumstances. And btw you can do the
    > similar things in Java with a finally block - it's just awfully more
    > verbose. And even Java has unchecked exceptions (everything that
    > inherits Error and RuntimeException).
    >
    > I've also written another article how to write methods like File.open
    > yourself:
    > http://blog.rubybestpractices.com/posts/rklemme/002_Writing_Block_Methods.html
    >
    > Kind regards
    >
    > robert


    Alright, but I guess what I am missing is HOW do we handle the
    excpetion? I see now recuse statement.

    Maybe I am missing something obvious but, with Java the method signature
    indicated the exception being thrown. That way in the calling method I
    could deal with it. In this example while I understand that the file
    handle will be closed how do you handle an exception raised?

    Thanks for your help!
    --
    Posted via http://www.ruby-forum.com/.
    Carl Jenkins, Jul 2, 2010
    #5
  6. 2010/7/2 Carl Jenkins <>:
    > Robert Klemme wrote:
    >> On 07/02/2010 03:08 AM, Carl Jenkins wrote:
    >>>>> block?
    >>>>
    >>>> Does this help?
    >>>>
    >>>> http://blog.rubybestpractices.com/posts/rklemme/001-Using_blocks_for_R=

    obustness.html
    >>>>
    >>>
    >>> Yes - thanks that does help.

    >>
    >> Good.
    >>
    >>> But, I have to be honest it seems a bit strange to not have to use
    >>> exception handling. Especially, when coming from the Java way of doing
    >>> things.

    >>
    >> You still need to handle the exception somewhere unless you want to let
    >> it terminate the program. =A0It's just the file handle closing that is
    >> ensured to be done under all circumstances. =A0And btw you can do the
    >> similar things in Java with a finally block - it's just awfully more
    >> verbose. =A0And even Java has unchecked exceptions (everything that
    >> inherits Error and RuntimeException).
    >>
    >> I've also written another article how to write methods like File.open
    >> yourself:
    >> http://blog.rubybestpractices.com/posts/rklemme/002_Writing_Block_Method=

    s.html
    >
    > Alright, but I guess what I am missing is HOW do we handle the
    > excpetion? I see now recuse statement.


    You have to write it yourself.

    > Maybe I am missing something obvious but, with Java the method signature
    > indicated the exception being thrown.


    As I said, this is not 100% true. There are unchecked exceptions in
    Java as well. Practically in Ruby the documentation should state
    which exceptions can be thrown.

    > That way in the calling method I
    > could deal with it. In this example while I understand that the file
    > handle will be closed how do you handle an exception raised?


    You catch it and do whatever is appropriate. Did you read a tutorial
    about Ruby and how to handle exceptions in this language? If not, see
    http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_exceptions.html

    Cheers

    robert

    --=20
    remember.guy do |as, often| as.you_can - without end
    http://blog.rubybestpractices.com/
    Robert Klemme, Jul 2, 2010
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Raterus
    Replies:
    6
    Views:
    576
    Raterus
    Aug 24, 2004
  2. Ahmed Moustafa
    Replies:
    5
    Views:
    30,022
    Chris Smith
    Jul 14, 2004
  3. Paul Miller
    Replies:
    3
    Views:
    1,017
    Alex Martelli
    Nov 12, 2003
  4. Replies:
    3
    Views:
    608
    Sherm Pendley
    Apr 16, 2007
  5. Lie
    Replies:
    3
    Views:
    629
Loading...

Share This Page