页面一:
package zhihua1;
//异常类:既可以是现成的异常类,也可以是自己创建的异常类
/*
*如何自定义一个异常类
*1.自定义的异常类继承现有的异常类
*2.提供一个序列号,提供几个重载的构造器
*/
public class MyException extends RuntimeException{
static final long serialVersionUID = -70348975766939L;
public MyException() {
}
public MyException(String msg) {
super(msg);
}
}
页面二:
package zhihua1;
/*
*自定义地抛出异常类型,若是继承RuntimeException,可以不显式地处理
*若是继承Exception,必须要显式地处理
*/
class Circle1{
private double radius;
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
/**
* @param radius
*/
public Circle1(double radius) {
super();
this.radius = radius;
}
//比较两个圆的半径大小
public int CompareTo(Object obj) {
if(this == obj) {
return 0;
}
else if(obj instanceof Circle) {
Circle1 c = (Circle1)obj;
if(this.radius > c.radius) {
return 1;
}else if(this.radius == c.radius){
return 0;
}else {
return -1;
}
}
else {
// throw new RuntimeException("传入的类型有误!");//手动地抛出一个异常
throw new MyException("传入的类型有误!087654493"); //自定义一个异常类
}
}
}
public class Testcircle {
public static void main(String[] args) {
Circle1 c1 = new Circle1(2.1);
Circle1 c2 = new Circle1(2.1);
System.out.println(c1.CompareTo(c2));
System.out.println(c1.CompareTo(new String("AA")));
}
}
页面三:
package zhihua1;
/*
*自定义地抛出异常类型,若是继承RuntimeException,可以不显式地处理
*若是继承Exception,必须要显式地处理
*/
public class TestStudent {
public static void main(String[] args) {
Student s = new Student();
s.regist(-12);
}
}
class Student{
int id;
public void regist(int id) {
if(id > 0) {
this.id = id;
}else {
throw new MyException("传入的学号有误!");
}
}
@Override
public String toString() {
return "Student [id=" + id + "]";
}
}