一、异常(Exception)跟错误(error)两种都是继承自throwable接口,这里主要说的是异常的处理。
异常分为两类:一种为编译时异常,一种为运行时异常
1.编译时异常。这种异常时属于必须处理的异常(因为不处理代码运行不下去)有两种处理方式:
一种为try.....catch,一种为throws Exception(这里的异常知道的可以写具体种类,不知道的可以直接写底层的Exception)。
分析:try.....catch就是在可以发生高风险的代码区域内加上,当区域内的代码发生异常时可以执行catch里面的代码,并且不会因为这一段代码错误,导致整个程序终止。
try-catch的格式 try{ 要执行的代码; }catch (异常类名 变量名){ 对异常的处理 } 2. try-catch捕捉异常的执行流程 先执行try的代码, try的代码没报错,跳过catch,正常执行其他代码 try的代码报错,进入对应的catch执行,执行结束正常执行其他代码 3. try-catch的好处 如果出现报错,程序会处理报错,然后往后执行 多个catch使用注意: 多个catch中的异常不能相同。 若catch中的多个异常之间有子父类异常的关系,那么子类异常要在上面的catch处理,父类异常在下面的catch处理。 如果出现异常,多个catch最多也只会执行一个。(从上往下匹配)
分析:throws Exception是将可能出现的错误层层往上抛,并没有根本上处理。从java内来看就是抛给方法,方法抛给调用者,调用者抛给主方法,主方法抛给java虚拟机。
从客户<<---->>前端<<---->>后端<<---->>服务器这个流程来看,就是将错误抛给客户端,如抛给客户的浏览器等这种对用户体验来说不友好。
因此在处理可能出现高风险代码时尽量用try....catch处理。
自定义异常:
java里面提供了很多异常提示如:ConcurrentModificationException(并发修改异常)、IndexOutOfBoundsExcepiton(索引越界异常)、NullPointerException(空指针异常)等等异常
还有就是一些异常形式在java里面没有的异常形式。例如:年龄超过正常范围等,需要我们自己定义。
如下图:年龄超范围
可以抛异常,去警告输入的值是否符合要求。
通过throw new 自定义的异常
throw抛出异常给方法,方法得写上要抛出的异常类型。