首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中抛出一般异常?

如何在Java中抛出一般异常?
EN

Stack Overflow用户
提问于 2011-08-04 21:51:07
回答 7查看 235.6K关注 0票数 66

考虑这个简单的程序。该程序有两个文件:

文件Vehicle.java

代码语言:javascript
复制
class Vehicle {
    private int speed = 0;
    private int maxSpeed = 100;

    public int getSpeed()
    {
        return speed;
    }

    public int getMaxSpeed()
    {
        return maxSpeed;
    }

    public void speedUp(int increment)
    {
        if(speed + increment > maxSpeed){
            // Throw exception
        }else{
            speed += increment;
        }
    }

    public void speedDown(int decrement)
    {
        if(speed - decrement < 0){
            // Throw exception
        }else{
            speed -= decrement;
        }
    }
}

文件HelloWorld.java

代码语言:javascript
复制
public class HelloWorld {

    /**
     * @param args
     */
    public static void main(String[] args) {

        Vehicle v1 = new Vehicle();
        Vehicle v2 = new Vehicle();

            // Do something

            // Print something useful, TODO
        System.out.println(v1.getSpeed());
    }

}

正如你在第一个类中看到的,我已经添加了一个注释("//抛出异常“),我想抛出一个异常。我是否必须为异常定义自己的类,或者在Java中是否有一些我可以使用的通用异常类?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-08-04 21:55:55

您可以创建自己的异常类:

代码语言:javascript
复制
public class InvalidSpeedException extends Exception {

  public InvalidSpeedException(String message){
     super(message);
  }

}

在你的代码中:

代码语言:javascript
复制
throw new InvalidSpeedException("TOO HIGH");
票数 103
EN

Stack Overflow用户

发布于 2011-08-04 21:53:54

您可以使用IllegalArgumentException:

代码语言:javascript
复制
public void speedDown(int decrement)
{
    if(speed - decrement < 0){
        throw new IllegalArgumentException("Final speed can not be less than zero");
    }else{
        speed -= decrement;
    }
}
票数 42
EN

Stack Overflow用户

发布于 2011-08-04 21:52:53

好吧,有很多异常可以抛出,但下面是抛出异常的方法:

代码语言:javascript
复制
throw new IllegalArgumentException("INVALID");

此外,是的,您可以创建自己的自定义异常。

关于异常的说明。当您抛出一个异常(类似于上面)并捕获到该异常时:您在异常中提供的String可以被访问,抛出getMessage()方法。

代码语言:javascript
复制
try{
    methodThatThrowsException();
}catch(IllegalArgumentException e)
{
  e.getMessage();
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6942624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档