首先要知道Java中的异常都是出现在方法的调用过程中,即在方法的调用过程中抛出异常对象。另外try-catch语句中catch语句中的参数都是Exception的子类对象,所以你自定义的异常类必须要继承Exception类,另外还需要区别好throws与throw这两个关键字的和这两个关键字的作用。
在这里我设计了一个异常类IntegerLimtError该异常类的作用是当输入一个整形且该整形为负数时就会产生异常:
package cn.skh.Error;
/**
* 自定义异常类
* 理解throws 和 throw两个关键字的作用
* 正确把握可能产生异常的方法位置并用throws方法声明产生的异常,
* 并在方法中利用throw抛出该异常对象
* 最好利用try-catch正确获取异常,并输出异常信息;
* @author SKH
*
*/
class IntegerLimtError extends Exception{//自定义的异常类
String msg;
public IntegerLimtError(String msg) {
super(msg);
}
}
class People{
int a;
public void setAge(int a) throws IntegerLimtError{//声明要抛出的异常类
if(a<0) {
throw new IntegerLimtError("人的年龄不应该是负数");//抛出异常类的对象
}
else {
this.a = a;
}
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "我的年龄是"+a+"岁";
}
}
public class Test01 {
public static void main(String[] args) {
People p1 = new People();
People p2 = new People();
try {
p1.setAge(-18);//当存在异常类的对象时即刻跳出try语句,因此不会再输出p2;
System.out.println(p2);
} catch (IntegerLimtError e) {//捕获异常
// TODO Auto-generated catch block
e.printStackTrace();
// System.out.println(e.toString());
}
try {
p2.setAge(18);
System.out.println(p2);
} catch (IntegerLimtError e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果: