抛出异常的语法格式为:
throw 异常对象;
例如:
throw new NullPointerException();
或IllegalArgumentException e = new IllegalArgumentException();
throw e;
该代码书写在方法或构造方法的内部.该语法中,使用throw关键字,后续为代表对应异常情况的异常类类型的对象.当系统执行到该代码时,将中止当前方法的执行,而直接返回到调用该方法的位置.所以在该代码下面不能直接书写其它的代码,因为这些代码将永远无法执行到.例如:
throw new NullPointerException();
int n = 10; //语法错误,该代码无法到达
按照该语法,则上面的转换方法改造以后的代码如下:
/**
* 将自然数转换为二进制或八进制字符串
* @param value 需要转换的自然数
* @param radix 基数,只能取2或8
* @return 转换后的字符串
*/
public static String toString(int value,int radix){
//判断异常的代码
if(value <0){
throw new IllegalArgumentException("需要转换的数字不是自然数!");
}
if(radix != 2 && radix != 8){
throw new IllegalArgumentException("进制参数非法");
}
if(value == 0){
return "0";
}
StringBuffer s = new StringBuffer();
int temp; //余数
while(value != 0){ //未转换结束
temp = value % radix; //取余数
s.insert(0,temp); //添加到字符串缓冲区
value /= radix; //去掉余数
}
return s.toString();
}
这里,当value的值小于0时,则抛出非法参数异常,当radix的值不是2或8时,则抛出非法参数异常.
这样在执行如下代码:
System.out.println(toString(12,2));
System.out.println(toString(12,16));
则程序的执行结果是:
1100
Exception in thread "main" java.lang.IllegalArgumentException: 进制参数非法
at ThrowException.toString(ThrowException.java:22)
at ThrowException.main(ThrowException.java:7)
这里当参数符合要求时,则输出正确结果1100,如果参数不合法,则抛出异常,由于异常没有得到处理,则将终止程序的执行,则控制台输出异常的信息,并显示异常的类型以及异常出现的位置.
这样,就通过抛出异常的语法,使得该方法的逻辑比较严谨,在方法的参数不合法,即出现异常情况时,将这个异常报告出来,使得该方法不会出现错误的结果.
另外,抛出的异常将传递给运行时系统,这样就将这种异常的情况传递出来,提醒其它的结构进行处理.