黑马程序员_异常处理
Java 语言在 编译时出现的错误是语法错误,,在 运行是的错误是 异常错误。
java将异常进行了封装,形成了体系。
首先 需要明确,,在java中,只有 Throwable 体系下的子类才有被throw、throws 关键字处理的机制。
---------------
throw:用于方法内部,抛出异常对象。。
throws:用于方法上,抛出异常类,可以抛出多个,用逗号隔开
当在方法内 throw 出异常时,要么try 这个异常进行处理,要么 在方法上throws 标识出这个异常,否则会编译失败。
如果方法上有抛出异常,用户调用这个方法,必须进行处理,要么try ,要么throws,否则会报错。
------------------
既然有了必须的,当然也会有特殊 类的异常。。
特殊异常 RuntimeException,这种异常,可以处理 ,也可以不处理。当程序出错时,就会停止运行。
java认为 程序没有错误,是用户自己的错误,需要用户自己调整处理。
---------------
finally 中定义的通常是 关闭资源代码,因为资源必须释放
finally只有一种情况执行不到 system.exit(0);
---------------
异常处理的格式:
一
try{// Code that might generate exception 监控区域。 } catch(){ //异常处理程序。 }
二
try{ } finally{ }
三
try{ // Code that might generate exception 监控区域。 }catch() { //异常处理程序。 } finally{ // 一定会执行的代码 }
当异常被抛出,异常处理机制将负责搜寻参数与异常类型相匹配的第一个处理程序,然后进入catch子句执行,注意:只有匹配的catch子句才能被执行。
有点像switch,但是case子句后面都会有break,避免后续的case子句执行。
注:在java中 唯有catch 是处理异常,如果么有 catch,那么必须进行抛出,否则会出错。。
-------------
自定义异常:
定义类继承Exception 或者 RuntimeException
1、让类具有可抛性,
2、继承类的共同方法,方便操作。
-------------..
子类覆盖父类,异常处理
1、如果父类方法没有异常,子类覆盖父类的方法也不可以抛出异常,必须进行try处理。
2,、如果父类抛出了异常,子类只能抛出父类方法的异常的子类或者子集。
因为早期的程序是不能处理新的异常,(父类已经有问题了,子类不能比父类更有问题。)
浙公网安备 33010602011771号