异常
出现非正常情况,使JVM非正常停止
异常也可以说成是一个类
Throwable
Eeception:编译期异常 Error:错误
RuntimeEeception:运行期异常
过程:
异常会被new一个对象(产生异常的内容,原因和位置)
原方法若无try...catch JVM将异常抛给调用者main方法,main方法无法解决,则抛给调用者JVM,JVM将(内容,原因,位置)红色字体打印出来并中断处理
异常处理
1.throw
作用:在指定方法中抛出指定的异常
格式:throw new XXXEeception(“异常长生的原因”)
(RuntimeEeception:运行期异常都默认交给JVM出处理)
Object非空判断‘
源码public static<T> T requireNonNull(T obj){
if(obj==null){throw new NullPointerEeception();
return obj;
}
声明异常throw
(交给别人来处理)
作用:方法内部异常,把异常对象声明抛给方法的调用者处理
(throw 要在方法声明处写,抛出多少异常就声明多少异常)
2.try...catch
(自己处理)
格式:
try{
可能产生异常的代码
}catch(定义一个异常变量){
处理逻辑
}
另:
(1 )多个异常,分别处理
多个异常,一次捕获,多次处理:异常变量中父类要在子类的上边,否则报错
多个异常,一次捕获,一次处理
(2)父类异常什么样,子类异常也什么样
父类抛出异常,子类可抛出异常/异常的子类/不抛出异常
父类未抛出异常,子类不可抛出异常,只能捕获处理
(3)finally中不要有return语句,否则会一直返回finally的结果