本文参与技术征文征集,欢迎正在阅读的你加入。异常概述Abnormal是异常的意思。在Java语言中,主要是指程序在运行阶段产生的错误。Throwable(throwable,throwable)java.lang.Throwable类是Java程序的所有错误或异常超类主要有两个子类ErrorError主要描述无法通过编程解决的严重错误主要错误ExceptionException主要描述可以解决的比较轻的错误通过编程异常类的主要分类RuntimeException->Runtimeexception,也称为不可检测异常类。Non-detectableexception类是指b编译时编译器无法检测到的异常。>空指针异常ClassCastException->类型转换异常NumberFormatException(间接子类)->数字格式异常注意当程序执行过程中出现异常时,如果不手动处理,会由Java虚拟机中的Java虚拟机处理默认方式。方法是打印异常名称、异常原因、异常发生位置并终止程序。后面的代码无法执行。IOException和其他异常类->其他异常类,也称为不可检测的异常情况算术异常类ArrayIndexOutOfBoundsException(间接子类)->数组下标异常类NullPointerException->空指针异常ClassCastException->类型转换异常NumberFormatException(间接子类)->数字格式异常*/publicclassTestRuntimeException{publicstaticvoidmain(String[]args){//观察检测异常//FileInputStreamfis=newFileInputStream("c:/a.txt");//java.lang.ArithmeticException算术异常inta=10;整数b=0;如果(b!=0){System.out.println(a/b);}//java.lang.ArrayIndexOutOfBoundsException数组下标越界异常int[]arr=newint[3];整数=3;if(num>=0&&num案例1Person.javapackagedemo5;publicclassPerson{privateStringname;privateintage;publicPerson(){super();}publicPerson(Stringname,intage)throwsException{super();设置名称(名称);setAge(age);}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage)抛出异常{如果(年龄>0&&年龄<150){this.age=age;}else{//System.out.println("不合理的年龄");//手动生成异常对象并抛出//thrownewException();thrownewAgeException("年龄不合理!");}System.out.println("异常效应");}@OverridepublicStringtoString(){return"Person[name="+name+",age="+age+"]";}}AgeExce选项.javapackagedemo5;publicclassAgeExceptionextendsException{/****/privatestaticfinallongserialVersionUID=1L;//自定义无参构造方法publicAgeException(){}//自定义以字符串为参数的构造方法publicAgeException(Stringmsg){super(msg);}}TestPerson.javapackagedemo5;公共类TestPerson{publicstaticvoidmain(String[]args){Personp=null;try{p=newPerson("张三",-12);}catch(Exceptione){//TODO自动生成的catch块e.printStackTrace();}System.out.println(p);}}demo5.AgeException:年龄不合理!demo5.Person.setAge(Person.java:33)为空demo5.Person.(Person.java:15)为demo5.TestPerson.main(TestPerson.java:8)自定义异常-->Case2Student。javapackagedemo6;publicclassStudent{privateStringname;privateintid;publicStudent(){super();}publicStudent(Stringname,intid)throwsIDException{super();设置名称(名称);设置标识(标识);}publicStringgetName(){重新转名字;}publicvoidsetName(Stringname){this.name=name;}publicintgetId(){returnid;}publicvoidsetId(intid)throwsIDException{if(id>0){this.id=ID;}else{//System.out.println("学号不合理");thrownewIDException("学号不合理");}System.out.println("结束");}@OverridepublicStringtoString(){return"Student[name="+name+",id="+id+"]";}}IDException.javapackagedemo6;publicclassIDExceptionextendsException{/****/privatestaticfinallongserialVersionUID=1L;publicIDException(){}publicIDException(Stringmsg){super(msg);}}TestStudent.javapackagedemo6;publicclassTestStudent{publicstaticvoidmain(String[]args)throwsIDException{/*Studentstu=null;try{stu=newStudent("小王",-5);}catch(IDExceptione){//TODO自动生成的catch块e.printStackTrace();}*/Studentstu=newStudent("小王",-5);System.out.println(stu);}}线程“main”中的异常demo6.IDException:demo6处的学号不合理。Student.setId(Student.java:30)atdemo6.Student.(Student.java:14)atdemo6.TestStudent.main(TestStudent.java:14)这里需要注意一点,案例1中的TestPerson其中,在main函数中,我们使用了try....catch语句,内部处理了异常,会打印如下语句。在case2的TestStudent中,我们直接将异常交给main函数处理,也就是交给虚拟机处理,所以不会执行后面的语句。异常对象的抛出throwsnewexceptiontype()例如:thrownewException()最后简单介绍一下throws和throw的区别name后面可以跟多个异常类名,用逗号隔开表示抛出异常,方法的调用者处理throws表示有可能出现异常,而这些异常不一定会发生在throw方法体中使用,下面的异常对象名只能抛出一个异常对象名表示抛出异常,方法体中的语句执行throw会抛出异常,throw的执行必须抛出某种异常