1什么是异常
所谓异常是指在程序运行的过程中发生的一些不正常的事情如除0溢出数组下标越界所要读取的文件不存在
2异常导致的后果
Java程序的执行过程中如出现异常事件可以生成一个异常类对象该异常类对象封装了异常事件的信息并将其被提交给Java运行时系统这个过程称为抛出异常不处理的话会直接导致程序直接中断。
3如何防止程序中断
设计良好地程序应该在程序异常发生时提供处理这些异常的方法使得程序不会因为异常的发生而阻断或产生不可预见的结果。
2、Java异常处理机制try{}语句块中放的是要检测的Java代码可能有会抛出异常也可能会正常执行 catch(异常类型){}块是当Java运行时系统接收到try块中所抛出异常对象时会寻找能处理这一异常catch块来进行处理可以有多个catch块 finally{}不管系统有没有抛出异常都会去执行一般用来释放资源。除了在之前执行了System.exit(0)
代码示例1
class person{String name;}public class Test {public static void main(String[] args) {person p null;try {p.name "zheng";}finally{ //不管系统有没有抛出异常都会去执行System.out.println("end");}}}
代码示例2
class person{String name;}public class Test {public static void main(String[] args) {person p null;try {p.name "zheng";}catch(java.lang.NullPointerException e){ //捕获、处理异常java.lang.NullPointerException异常类型//catch(Exception){}处理所有异常System.out.println("空指针检查下是否没有初始化");}finally{System.out.println("end");}}}
3、throw和throwsthrow用于手动抛出异常。作为程序员可以在任意位置手动抛出异常 throws用于在方法上标识要暴露的异常。抛出的异常交由调用者处理 两者区别 throw用在方法内后面跟上要抛出的异常类对象**手动抛出** throws修饰在方法上告诉调用者此方法可能会抛出异常后面跟上可能要抛出的异常类名**申明**
代码示例
class bar{int age;public bar(int age){this.age age;}public void check() throws IllegalArgumentException{if (age < 18){throw new IllegalArgumentException("年龄太小"); //抛出异常}} }public class Test {public static void main(String[] args) {bar b new bar(15);try{b.check();}catch(IllegalArgumentException e){System.out.println(e.getMessage());}System.out.println("end");}}
常见异常 RuntimeExceptionIOExceptionSQLExceptionClassNotFoundException 自定义异常 Java提供的异常体系不可能预见所有希望加以报告的错误 自定义异常类必须从已有的异常类继承 建立新的异常类型最简单的方法就是让编译器产生默认构造方法 对异常来说最重要的部分就是它的类名 可以为异常定义一个接受字符串参数的构造方法字符串参数描述异常信息
自定义异常示例代码
class bar{int age;public bar(int age){this.age age;}public void check() throws AgeLessThanEighting{if (age < 18){throw new AgeLessThanEighting("年龄太小");//抛出自定义异常}} }class AgeLessThanEighting extends Exception{ //自定义异常String massege;public AgeLessThanEighting(String massege){this.massege massege;}}public class Test {public static void main(String[] args) {bar b new bar(15);try{b.check();}catch(AgeLessThanEighting e){System.out.println(e.massege);}System.out.println("end");}}