做百度网站每年的费用多少钱,手机网站建设的行情,一般企业网站3年多少钱,专业建站分销商城异常是什么
异常就是程序在进行时的不正常行为#xff0c;就像之前数组时会遇到空指针异常#xff08;NullPointerException#xff09;#xff0c;数组越界异常#xff08;ArrayIndexOutOfBoundsException#xff09;等等。 在java中异常由类来表示。
异常的分类
异常…异常是什么
异常就是程序在进行时的不正常行为就像之前数组时会遇到空指针异常NullPointerException数组越界异常ArrayIndexOutOfBoundsException等等。 在java中异常由类来表示。
异常的分类
异常有一个顶层类Throwable Throwable派生出两个子类ErrorException Error指的是Java虚拟机无法解决的严重问题例如递归时一直开辟栈导致栈溢出的错误。 Exception也分为两种异常编译时异常和运行时异常。
编译时异常这种异常顾名思义是在编译时候就会发生这种异常要在程序中捕获声明才能让程序通过。 例如在比较器文章这篇中要实现clone方法时要通过throws关键字声明CloneNotSupportedException异常才能正常使用。
运行时异常这种异常全在RunTimeException这个类和其子类之下编译通过运行报错这种异常可以交给JVM处理。
异常的处理方法
异常的处理一般使用throw、try、catch、finally、throws这五个关键字。
throw抛出异常
在程序执行时该语句引发异常此时就可以通过throw抛出异常来告诉程序员原因。 一般格式为throw new 异常类名(异常产生的原因); 例如我们进行方法传参为数组时参数是null抛出空指针异常
public void printArray(int[] array){if(null array){throw new NullPointException(数组传参为空null);}else{//}
}注意事项 1.异常的抛出必须是在方法的内部 2.一旦异常抛出成功之后在该语句之后的代码就不会执行了。就像上面写的else里面的语句不会执行了。 3.抛出的异常必须是Exception的或其子类编译时异常必须在后续代码中处理运行时异常可以交给JVM处理。
异常的声明
异常的声明就是告诉这个方法会报哪些异常然后在这个方法内部不用对异常处理让后面使用这个方法时对异常进行处理。 一般格式
修饰符 返回值类型 方法名(参数表列) throws 异常类型1异常类型2...{}注意事项 1.格式不能变一定是将声明放在参数表列后面可以多个异常同时声明 2.声明的异常必须是Exception的或其子类。如果声明的异常是具有父子类关系只声明父类也可以
异常的捕获和处理
使用try-catch语句来对异常进行捕获和处理。 使用格式
try{//会产生异常的代码
}catch(异常类型1 e){//对异常的处理代码
}catch(异常类型2 e){//对异常的处理代码
}注意事项 1.像前面一样如果try中抛出异常后还有代码就不会执行 2.catch语句之间就像if-else语句一样只会执行其中一个异常 3.如果try中抛出异常被catch捕获并处理了那就会执行try-catch之后的语句如果没有捕获到就不会执行 4.如果两个异常是父子类一定要把子类异常catch放在前面 5.如果两个异常处理方式一样也可以用单竖杠 | 来处理catch(异常类型1 | 异常类型2 e){}但是这样就不知道具体是哪个异常了。
finally
这个语句是跟try-catch语句一起用的这个语句的特点就是比catch先执行里面常放一些资源关闭代码 格式
try{//会产生异常的代码
}catch(异常类型1 e){//对异常的处理代码
}catch(异常类型2 e){//对异常的处理代码
}finally{//资源关闭代码
}try 或者 catch 中如果有 return 会在这个 return 之前执行 finally. 但是如果 finally 中也存在 return 语句, 那么就会执行 finally 中的 return, 从而不会执行到 try 中原有的 return.
自定义异常类
异常本质就是一个类然后继承于已有的异常类。在写自己的异常类时类名最后一个单词使用Exception更加规范 格式
class NameException extends 异常类{//
}自定义异常类时一般继承Exception 或 RunTimeException。 继承Exception默认是编译时异常 继承RunTimeException是运行时异常 在自定义异常类中一般会实现如下的一个构造方法来报出什么原因导致异常
public NameException(String message) {super(message);}