1、自己抛出异常
之前的异常都是由编译器抛出的,编译器检查到你的数组下标越界了,就给你抛出一个异常,这属于语法上的错误。但是在有些时候我们希望一些逻辑错误也可以抛出异常,比如日期不可能是负数,这该怎么办呢?我们可以用throw自己写手动扔出一个异常,格式如下:
throw new ExceptionType(MessageString);
ExceptionType是一个异常类名称,而MessageString是传递给异常对象的构造函数的一个字符串参数,这个参数就是从异常对象的getMessage中返回的错误消息,现在你可以自定义这个错误消息的内容了。如果不向构造函数传递消息,getMessage就会返回一条空消息。
不要混淆throw和throws,throw会创建一个新的异常对象,而throws只会告诉编译器:这个方法有可能抛出异常。
看一个例子:假设你有一个骰子,你希望定义骰子上的数字个数最小是多少,如果小于这个值就返回一条错误消息。
import java.util.Random;
/**
The Die class simulates a six-sided die.
*/
public class Die
{
private final int MIN_SIDES = 4;
private int sides; // Number of sides
private int value; // The die's value
/**
The constructor performs an initial
roll of the die.
@param numSides The number of sides for this die.
*/
public Die(int numSides)
{
// Validate the number of sides.
if (numSides < MIN_SIDES)
{
throw new IllegalArgumen