Java Java Objects Harnessing the Power of Objects Throwing Exceptions

What am I supposed to do?

I don't know what I am supposed to do. I keep getting an error message saying that I should make sure that i place the check before updating the lapsDriven and barCount values. I think I did that, so what is wrong?

Please help me.

class GoKart {
  public static final int MAX_BARS = 8;
  private String color;
  private int barCount;
  private int lapsDriven;

  public GoKart(String color) {
    this.color = color;

  public String getColor() {
    return color;
  public void charge() {
    barCount = MAX_BARS;

  public boolean isBatteryEmpty() {
    return barCount == 0;

  public boolean isFullyCharged() {
    return MAX_BARS == barCount;

  public void drive() {

  public void drive(int laps) {
    int newBarCount = barCount -= laps;
    if(newBarCount < 0){
      throw new IllegalArgumentException("No Enough Battery Bars!");
    }else {
      lapsDriven += laps;
      barCount -= laps;

Here is the error I get: "Bummer: Make sure you throw the exception before you change the barCount and lapsDriven fields."

1 Answer

Jennifer Nordell
Jennifer Nordell
Treehouse Staff

Hi there, Mostafa Alhosain ! You are incredibly close. You're literally one character off.

Inside your drive method you have this line:

int newBarCount = barCount -= laps;

But that = sign immediately before the laps cause barCount to update. What you're looking for is this:

int newBarCount = barCount - laps;

You want to know if barCount - laps would cause an error without actually updating barCount first :smiley:

Hope this helps! :sparkles:

Thanks a lot! It worked out.