All times are UTC - 5 hours




Post new topic Reply to topic  [ 12 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: About Question enthuware.ocajp.i.v8.2.1385 :
PostPosted: Fri Oct 14, 2016 1:13 am 
Offline

Joined: Mon Oct 03, 2016 3:41 am
Posts: 5
A student submitted the following error and it was verified by a course mentor:


I've attached screenshots about a question I believe may be incorrectly written. In my understanding the method doSomethingElse() is throwing an unchecked expression therefor should be wrapped in either a try/catch or declared thrown in the signature or it will be a compiler error. The material however ignores this fact.

http://screencast.com/t/uSYprVQH
http://screencast.com/t/08xgVslaUB


Top
 Profile Send private message  
 
 Post subject: Re: About Question enthuware.ocajp.i.v8.2.1385 :
PostPosted: Fri Feb 17, 2017 2:12 pm 
Offline

Joined: Wed Feb 08, 2017 5:42 pm
Posts: 31
MyException class must extends RuntimeException.

I can't see this in your images.


Top
 Profile Send private message  
 
 Post subject: Re: About Question enthuware.ocajp.i.v8.2.1385 :
PostPosted: Fri Feb 17, 2017 9:30 pm 
Offline
Site Admin

Joined: Fri Sep 10, 2010 9:26 pm
Posts: 6757
corptrainer1 wrote:
I've attached screenshots about a question I believe may be incorrectly written. In my understanding the method doSomethingElse() is throwing an unchecked expression therefor should be wrapped in either a try/catch or declared thrown in the signature or it will be a compiler error.

Your understanding is not correct. An unchecked exception need not be caught or be declared in the throws clause.


Top
 Profile Send private message  
 
 Post subject: Re: About Question enthuware.ocajp.i.v8.2.1385 :
PostPosted: Fri Jun 09, 2017 9:02 am 
Offline

Joined: Wed Jun 07, 2017 3:13 am
Posts: 5
How can I modify the code to remove the ArrayIndexOutOfBoundsException and see MySpecialException in action?


Top
 Profile Send private message  
 
 Post subject: Re: About Question enthuware.ocajp.i.v8.2.1385 :
PostPosted: Fri Jun 09, 2017 9:18 am 
Offline
Site Admin

Joined: Fri Sep 10, 2010 9:26 pm
Posts: 6757
Instead of calling doSomething(); in main, you can call doSomethingElse();


Top
 Profile Send private message  
 
 Post subject: Re: About Question enthuware.ocajp.i.v8.2.1385 :
PostPosted: Fri Jun 09, 2017 9:22 am 
Offline

Joined: Wed Jun 07, 2017 3:13 am
Posts: 5
There is a CTE saying 'Cannot resolve MySpecialException.


Top
 Profile Send private message  
 
 Post subject: Re: About Question enthuware.ocajp.i.v8.2.1385 :
PostPosted: Fri Jun 09, 2017 9:46 am 
Offline
Site Admin

Joined: Fri Sep 10, 2010 9:26 pm
Posts: 6757
Well, you have to write it as well. The problem statement says, (Assume that MySpecialException is an unchecked exception.) Adding the following line will do -

class MySpecialException extends RuntimeException{ }


Top
 Profile Send private message  
 
 Post subject: Re: About Question enthuware.ocajp.i.v8.2.1385 :
PostPosted: Wed Aug 16, 2017 2:41 pm 
Offline

Joined: Sun Oct 25, 2015 10:14 am
Posts: 19
I don't get why the exception is not caught anywhere.

So the question is:

What will the following code print when compiled and run?
(Assume that MySpecialException is an unchecked exception.)

Code:
1. public class ExceptionTest {
2.    public static void main(String[] args) {
3.        try {
4.            doSomething();
5.        } catch (MySpecialException e) {
6.            System.out.println(e);
7.        }
8.    }
9.
10.    static void doSomething() {
11.        int[] array = new int[4];
12.        array[4] = 4;
13.        doSomethingElse();
14.    }
15.
16.    static void doSomethingElse() {
17.        throw new MySpecialException("Sorry, can't do something else");
18.    }
}

In the explanation, at the end you state that "Since the exception is not caught anywhere, it will be thrown out to the JVM, which will print the stack trace of the exception."

Now, it is my understanding that unchecked exceptions such as an "ArrayIndexOutOfBoundsException" don't have to be caught or declared, BUT THEY CAN BE CAUGHT.

I believe that the unchecked exception is indeed being caught here:

So my understanding is that the way this should go is as follows:
At line 4, the method doSomething() is being called. Then at line 12 an ArrayIndexOutOfBoundsException (which is an unchecked exception) is being thrown. Then this exception is being caught at line 5.

If I type in the code, then it doesn't give the result I think it should, but I don't see where my logic fails.
Can you point out where my reasoning goes wrong?

Thank you!


Top
 Profile Send private message  
 
 Post subject: Re: About Question enthuware.ocajp.i.v8.2.1385 :
PostPosted: Wed Aug 16, 2017 10:10 pm 
Offline
Site Admin

Joined: Fri Sep 10, 2010 9:26 pm
Posts: 6757
Why do you think ArrayIndexOutOfBoundsException is being caught at line 5?
The catch at line 5 is for MySpecialException. Why do you think it will catch ArrayIndexOutOfBoundsException ?

HTH,
Paul.


Top
 Profile Send private message  
 
 Post subject: Re: About Question enthuware.ocajp.i.v8.2.1385 :
PostPosted: Thu Aug 17, 2017 6:02 am 
Offline

Joined: Sun Oct 25, 2015 10:14 am
Posts: 19
Aha, I get it now!

I thought ArrayIndexOutOfBoundsException would be caught at line 5 because it was an unchecked exception, just like MySpecialException is an unchecked exception.
But it's not the same unchecked exception as ArrayIndexOutOfBoundsException, nor is it defined as its superclass. So therefore ArrayIndexOutOfBoundsException will not be caught.

Thanks for your response!


Top
 Profile Send private message  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 12 posts ]  Go to page 1, 2  Next

All times are UTC - 5 hours


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Template made by DEVPPL/ThatBigForum