Ok, everybody here already know about the affair, I am just discussing some more bits of this love triangle.
Lets dig hard to the shallow level :)
So from even the baddest of our common-sense, we smell that finally block supercedes the two others, viz., try and catch. Lets prove a point in this.
The output will always be 0.
So, basically, I can have a conversation as follows:
Asker: Dude, what you are gonna do with this finally?
Me: Ok dude, since this is the one that will be run no matter how my program logic screws up in the try block, I may write only that part which will not throw any problems like (1+2*3). But I will not. I will not involve my business logic in this love-triangle.
Asker: What then?
Me: I'd love to clear up things only.
Asker: I'm not clear!
Me: For example, if I am doing input-output operations, then I will close the connections in finally and nullify the references to help Mr. GC.
Asker: Ok
Me: Enjoy!
Lets dig hard to the shallow level :)
try{ //try something } //and if the trial goes wrong, catch the issue and handle catch(Exception e){ //handling the problematic part //or at least letting the program to continue //and exit gracefully and not shut at face! } //but finally{ //do this, so you are the winner!! }
So from even the baddest of our common-sense, we smell that finally block supercedes the two others, viz., try and catch. Lets prove a point in this.
class Dodo { public static void main(String...args) { int num = doSomething(); System.out.println(num); } private static int doSomething() { try { return (1+2+3); } catch(Exception e) { return -1; } finally { return 0; } } }
The output will always be 0.
So, basically, I can have a conversation as follows:
Asker: Dude, what you are gonna do with this finally?
Me: Ok dude, since this is the one that will be run no matter how my program logic screws up in the try block, I may write only that part which will not throw any problems like (1+2*3). But I will not. I will not involve my business logic in this love-triangle.
Asker: What then?
Me: I'd love to clear up things only.
Asker: I'm not clear!
Me: For example, if I am doing input-output operations, then I will close the connections in finally and nullify the references to help Mr. GC.
Asker: Ok
Me: Enjoy!
public class TCFTest { static int i; public static void main(String[] args) { m1(); System.out.println(i); //What will be the output? ^_^ } static void m1(){ //the value of static variable 'i' will be set try{ i= 1; try{ i= 4; } finally{ i= 5; } } catch(Exception e){ i= 2; } finally{ i= 3; try{ i= 6; } finally{ i= 7; } } }//m1() end }
No comments:
Post a Comment
Liked or hated the post? Leave your words of wisdom! Thank you :)