异常处理
- 异常概述与异常体系统结构
- 常见异常
- 异常处理机制一:try-catch-finally
- 异常处理机制二:throws 手动抛出
- 用户自定义异常类
异常就是:在java中,程序执行中发生的不正常情况
(开发过程中的语法错误与逻辑错误不是异常)
int d = 2.0;
(1)&(!1)
java在执行过程中的异常事件分为两类:
1 . Error:java虚拟机无法解决的严重问题:JVM系统内部错误,资源耗尽,内存溢出…
2 . Exception:其他因编译错误或偶然的外在因素导致的一般性问题
3 . 空指针异常
4 . 试图读取不存在的文件
常见的异常
ArrayIndexOutofBoundsException
NullPointerException
ClassCsstException Person ->Animal <- Cat
Animal animal = new Cat();
Animal animal1 = new Person();
Person person = (Person)animal1();
//Person person = (Person)animal();
java异常处理的方法
方式一:try-catch-finally
方式二:throws+异常类型
java提供的是异常的抓抛模型
java在执行是如出现异常,会生成一个异常类对象,该异常对象会被提交给java,这个过程是抛出异常
异常对象的生成:
由虚拟机自动生成:自动抛出,如果出现异常且没有找到对应的处理程序,java虚拟机就会在后台创建一个对应异常类的实例对象并抛出
由开发人员手动创建:Exception exception = new ClassCastException();
不抛出对程序没影响,就像创建了一个普通的对象一样
mian(..)main方法最后将异常抛到os并终止程序
method1()
method2()
method3()
try{
//可能会产生异常的代码
}
catch(ExceptionName1 e){
//处理ExceptionName1型异常时丶处置措施
}
catch(ExceptionName2 e){
//处理ExceptionName2型异常时的处置措施
}finally{
//无论是否发生异常,最后都会执行的语句
}
getMessage() 获取异常信息,返回字符串
printStackTrace() 获取异常类名和异常信息以及异常出现在程序中的位置,返回值void
练习
编写一个类ExceptionTest,在main方法中使用try catch finally
class ExceptionTest{
public static void main(String[] args){
try{
int i = 1/0;
}catch(Exception e ){
System.out.println("Warning!!!");
}finally{
System.out.println("finally!");
}
}
}