自定义异常就是程序员自己定义的异常,虽然Java提供了很多的异常,但不可能面面俱到。 1:定义异常类 public class ChuShuException extends Exception{//定义异常类,继承Exception类 public ChuShuException(String mes){ super(mes); } } 2:使用异常类 //定义各种抛出异常的方法,在main方法中调用这些方法 public class NumberTest { public void shang(int x,int y) throws ChuShuException{ if(y==0){ //抛出异常,在main方法中执行异常,这里括号内的内容会由e.printStackTrace();语句输出 throw new ChuShuException("除数不能为0"); } System.out.println(x/y); } } 3:使用自定义的异常方法 public class Test { public static void main(String[] args) { // TODO Auto-generated method stub NumberTest test =new NumberTest(); try { test.shang(5, 0);//调用NumberTest中的shang方法 } catch (ChuShuException e) { // TODO: handle exception //这里输出的异常信息是给程序猿自己看的,所以程序上线时,这里的代码是注释掉的 e.printStackTrace(); //这里的信息是给用户看的 System.out.println("除数不能为0"); } } } 当不注释e.printStackTrace();语句时,会输出具体的错误,程序员可以清楚的知道什么地方出现了问题 如图: 当注释掉e.printStackTrace();语句之后,只会显示你想要让用户看到的信息 如图: