1.异常类有分为编译时异常和运行时异常
1.1编译时异常:写代码的时候就会提醒你有异常
常见的编译时异常有:
IOException
SQLException
CloneNotSupportedException
parseException
1.2运行时异常:java.lang.RuntimeException,运行的时候会在控制台提示异常
常见的运行时异常有:
NullPointerException: 空指针异常,一般出现于数组,空对象的变量和方法
ArrayIndexOutOfBoundsException: 数组越界异常
ArrayStoreException: 数据存储异常
NoClassDefFoundException: java运行时系统找不到所引用的类
ArithmeticException: 算数异常,一般在被除数是0中
ClassCastException: 类型转换异常
IllegalArgumentException: 非法参数异常
IllegalThreadStateException: 非法线程状态异常
NumberFormatException: 数据格式异常
OutOfMemoryException: 内存溢出异常
PatternSyntaxException: 正则异常
1.3自定义异常:
自定义一个类,继承某个异常类
如果继承的是Exception那么就定义了一个编译时异常
如果继承的是RuntimeException或者其子类,那么就定义了一个运行时异常
2.怎么使用:
2.1一种是在方法中声名异常,谁调用就把异常抛给谁
2.2一种是使用try{}..catch{}块处理异常
如果多个异常处理的方式不同,可以用多个catch处理
如果所有异常处理方式一样,可以捕获一个父类异常进行统一的处理
如果多个异常分成了不同的组,那么同一组异常之间可以使用|隔开(jdk1.7开始)
jdk1.7还增加了增强tr(){}catch(){},通常用于自动关流
3.异常知识扩展:
3.1 Throwable类是所有异常的超类,有两个子类,分为Error和Exception
Error:错误是无法处理的,只能更改代码,就像一个人得癌症一样
Exception:异常是可以处理的,就像是感冒一样,吃药就能好
3.2 在方法重写的时候
子类抛出的编译时异常不能超过父类编译时异常范围
子类不能抛出比父类更多的编译时异常(这里是指抛出异常的范围不能更大,但个数可以更多)
编译时异常随你抛
个人总结,如有错误或疑问请帮我指出,谢谢^!