Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Java Java Objects (Retired) Harnessing the Power of Objects Throwing Exceptions

Bhupend Patil
Bhupend Patil
25,918 Points

HELP :( throwing-exceptions

where to write IllegalArgumentException ?

GoKart.java
public class GoKart {
  public static final int MAX_BARS = 8;
  private String mColor;
  private int mBarsCount;

  public GoKart(String color) {
    mColor = color;
    mBarsCount = 0;
  }

  public String getColor() {
    return mColor;
  }

  public void drive() {
    drive(1);
  }

  public void drive(int laps) {
    // Other driving code omitted for clarity purposes
    throw new IllegalArgumentException("Not enough battery remains");
    mBarsCount -= laps;
  }

  public void charge() {
    while (!isFullyCharged()) {
      mBarsCount++;
    }
  }

  public boolean isBatteryEmpty() {
    return mBarsCount == 0;
  }

  public boolean isFullyCharged() {
    return mBarsCount == MAX_BARS;
  }

}

3 Answers

Ken Alger
STAFF
Ken Alger
Treehouse Teacher

Bhupend;

You are in the right spot, but you only need to through the exception if something is not correct, such as the battery not having enough bars to do the requested number of laps.

Post back if you are still stuck.

Ken

I think trying to relate the video code to the challenge answer caused me a lot of confusion and heartache.

Following the pattern in the video, I thought the added code (including the necessary if code Ken said above was needed) would be:

  int newAmount = mBarsCount + laps
  if (newAmount > MAX_BARS) {
    throw new IllegalArgumentException("Not enough battery remains");
  } 

//however the above code didn't pass the answer analyzer




//after MUCH try and error I found I had to use 
//an if test that was TOTALLY different from the video to pass:

  public void drive(int laps) {
    if (laps > mBarsCount) {
      throw new IllegalArgumentException("Not enough battery remains");
    }
    mBarsCount -= laps;
  }


// this challenge definitely made me think too much..
Dean Onizuka
Dean Onizuka
4,753 Points

this is the same problem i had as well. the videos do seem to be misleading and following the videos to the tee and using the code in the video seems to cause more trouble

Bhupend Patil
Bhupend Patil
25,918 Points

Thank You Ken it helped me :)