java自学之路----- 异常

异常{

定义:运行时期 发生的不正常情况,并且对不正常情况进行了描述、封装对象;java通过面向对象思想将问题封装成了对象

Throwable{

不同处理:Error,由JVM抛出严重性问题,发生了一般直接修改程序

可处理:Exception,

}


编译时可被检测异常:除了RuntimeException之外Exception及其子类,该类把异常从方法中抛出到main方法,方法要加throws,main方法也要加throws,该异常在编译时期就检测,解决办法是让问题有对应的处理方法,针对性处理


运行时检测的异常:Exception中的RuntimeException及其子类,无法让功能继续,运算无法进行,大多情况都是因调用者的原因导致的或引发了内部状态的改变导致,这种问题一般JVM不处理,编译的时候直接通过,运行的时候让调用者调用的程序强制停止,让调用者对代码进行修正


自定义异常:让一个类成为异常类,继承异常体系,因为只有异常体系才有资格具有可抛性,才可以被两个关键字操作throw   和throws

例:class extends Exception(){}

}


throws:用于函数上,抛出异常类,有多个的时候用逗号间隔

throw:用于函数内部,抛出异常对象,有多个throw的时候只能引发一个,其他的将不会执行


异常捕捉{

对异常进行针对性处理

格式:try{ } catch(异常类 变量){ } finally{ }


注意{

1.函数内部如果抛出需要检测的异常,那么在函数上要声明或者使用捕捉的方式(try catch)

2.如果调用到声明异常的函数,要么try catch或throws,否则程序无法继续运行

3.功能内容可以解决用catch,不能解决就throws告诉调用者

4.可以有多个需要检测的异常,就抛出多个,或者用多个catch捕捉

5.System.exit(0),强制改程序退出JVM

}


finally{

1.通常用于关闭或释放资源

2.try可以和finally一起使用,用于关闭资源,并且将异常抛出交给上级处理

3.没有catch就没有捕捉就必须声明(throws)

}


重点:子类覆盖父类方法的时候,如果父类方法抛出异常,子类的方法只能抛出父类的异常或该异常的子类,父类抛出多个异常,子类只能抛出父类异常的子集,如果父类方法没有抛出异常,子类也不能抛出异常,只能用try catch捕捉处理。

原因大致是因为在某个方法中接受父类对象的引用,在执行父类方法的时候抛出了异常,对这些异常运用catch进行了捕捉并且处理,但是如果将子类的对象传给父类的引用(多态),子类的方法又抛出了另一些异常,那些catch就不能对子类方法抛出的异常进行处理

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章