目录
- 异常的概念及分类
- 异常的处理try-catch-finally
- 异常抛出throw(s)
- 自定义异常
异常的概念及分类
- 什么是异常
- 异常是指在程序的运行过程中发生的一些不正常事件。比如:除0溢出、数组下标越界、所要读取的文件不存在。
- 异常导致的后果
- 项目JAVA程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息,并将其被提交给JAVA运行时系统,这个过程称为抛出异常,不处理的话会直接导致程序直接中断。
- 如何防止程序中断
- 设计良好的程序应该在程序异常发生时提供处理这些异常的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果。
- 异常的分类
- JAVA异常处理机制
异常的处理try-catch-finally
例如下面这个例子,虽然提示出错,但还是能输出"end"
class Person
{String name;
}public class test {public static void main(String[] args) {Person p = null;//空指针异常try{p.name = "xiaoMing";}finally{System.out.println("end");}}
}
异常捕获:
class Person
{String name;
}public class test {public static void main(String[] args) {Person p = null;//空指针异常try{p.name = "xiaoMing";//或者catch(Exception e)代表捕获所有异常 后面加个e类似int a变量名}catch(java.lang.NullPointerException e){//捕获异常,就是编译器里面提示的具体错误System.out.println("空指针,检查下是否没有初始化");}finally{System.out.println("end");}}
}
异常抛出throw(s)
例子:
class Bar{int age;public Bar(int age){this.age = age;}void check()throws IllegalArgumentException{//throws用于在方法上标识要暴露的异常if (age < 18){throw new IllegalArgumentException("年纪太小");//throw抛出异常}}
}public class test {public static void main(String[] args) {Bar b = new Bar(15);try{b.check();}catch(IllegalArgumentException e){//alt+?快捷键System.out.println(e.getMessage());//输出年纪太小e.printStackTrace(); //输出异常}finally{System.out.println("end");}}}
运行结果:
年纪太小
java.lang.IllegalArgumentException: 年纪太小at Bar.check(test.java:11)at test.main(test.java:21)
end
自定义异常
例子:
class Bar{int age;public Bar(int age){this.age = age;}void check()throws AgeLessThanEighteenException{//throws用于在方法上标识要暴露的异常{if (age < 18){throw new AgeLessThanEighteenException("年纪太小");//throw抛出异常}}
}class AgeLessThanEighteenException extends Exception{private String message;public AgeLessThanEighteenException(String message){this.message = message;}
}public class test {public static void main(String[] args) {Bar b = new Bar(15);try{b.check();}catch(AgeLessThanEighteenException e){//这个属于前面PPT讲的受查异常,必须要进行catch处理System.out.println(e.getMessage());e.printStackTrace(); }finally{System.out.println("end");}}}
结果:
null
AgeLessThanEighteenExceptionat Bar.check(test.java:11)at test.main(test.java:28)
end