概述
输入数据的格式,读取文件是否存在,网络中断等情况。
异常:在java语言中,将程序执行中发生的不正常情况称为异常。
常见异常
Error:java虚拟机无法解决的严重问题。
Exception:编程错误或外在因素导致一般性问题
编译时异常(checked)
运行时异常(unchecked)
捕获错误要在在编译期间,但有些错误只要在运行时才发生
异常处理机制
要在可能出现错误的地方加上检测的代码。
异常处理机制:将异常处理的程序代码集中在一起,与正常的程序代码分开。
java提供的异常处理:抓抛
java程序执行过程中,如果出现异常,会生成一个异常类对象,该异常类对象被提交给java运行时系统,这个过程称为抛出异常。
抛:出现异常后,会在异常代码处生成一个对应异常类的对象,并将此对象抛出。
一旦抛出对象后,其后的代码就不再执行
抓:异常处理的方式:①try-catch-finally②throws
异常处理机制一:try-catch-finally
try{
//可能出现异常的代码
}catch(异常类型1 变量名){
//异常处理的方式1
}
finall{
//一定会执行的代码
}
》使用try将可能出现异常代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常类的对象,根据此对象的类型,去catch中进行匹配
》一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常的处理,一旦处理完成,就跳出当前的try-catch结构。(在没有finall的情况下)
》catch中的异常类型有子父类关系。如果有则子类声明要在父类上面。如果没有则位置无所谓。
》》finall是可选的。finally中声明的一定会被执行的代码,即使catch中又出现异常了,try中有return语句,catch中有return语句等情况
常用操作:getMessage printStackTrace(红字)
编译时异常用try-catch-finally。
异常处理机制二:throws
throws+异常类型
在方法后throws抛给调用它的方法,方法执行时,出现异常,仍会在异常代码处生成一个异常类对象。在main方法里try-catch。
try-catch-finally真正将异常处理掉
throws只是将异常抛给了方法的调用者
子类重写方法时抛出的异常不能不父类异常大
如何选择抛出异常的机制:
》如果父类中被重写的方法没有throws方式处理,则子类重写的方法也不能使用throws,子类重写方法中有异常必须使用try-catch-finally方式处理。
》执行的方法a中,先后又调用了另外的方法,这几个方法时递进关系,使用throws方式进行处理,在执行时期整个try-catch。
手动抛出异常:throw
关于异常对象的产生:
①系统自动生成
②手动生成一个异常,并抛出,在方法处throws并在main方法try-catch
用户自定义异常
怎么自定义异常:
》RuntimeException
》Exception
①让定义的类继承于现有的异常结构RuntimeException或Exception
②提供全局常量serialVersionUID:唯一表示自定义类的常量。
③手动抛出自定义异常。
throw new +自定义异常类型(“XXXXX”);