java基础中异常主要涉及以下几个方面的问题
一。异常的体系
二。常见的异常
三。异常的处理----try{}catch{}方式
四。异常的处理方式二----throw方式
五。手动抛出异常
六。自定义异常
一。异常的体系
JAVA异常一共分为两个类: 红色为受检异常,编写代码的时候,需要手动处理异常(抛出或者处理到try…catch),蓝色是非受检异常,编写代码的时候,不需要手动处理异常,当运行时出现错误,终止运行。
Error和Exception 他俩都是Throwable的子类,Error表示是jvm内部的错误,比如StackOverflowerError(堆栈满了)和OOM(内存溢出),一般通过更改代码没有办法解决。Exception是我们编写代码可以解决的异常,IO异常下面的(文件找不到等),反射下面的(ClassNotFoundException),在另一个包中调用clone且没有实现Cloneable接口的时候(CloneNotSupporterException)这些都是需要在编写代码的时候手动处理的,而RuntimeException(运行时异常)则不一定需要在编写代码的时候处理,因为他不一定会有异常(比如正常计算不会有问题,当除以0时就会报算术异常),当异常发生时,代码终止。以上就是
二。常见的异常
java.lang.RuntimeException
ClassCastException
ArrayIndexOutOfBoundsException
NullPointerException
ArithmeticException
NumberFormatException
InputMismatchException
java.io.IOExeption
FileNotFoundException
EOFException
java.lang.ClassNotFoundException
java.lang.InterruptedException
java.io.FileNotFoundException
java.sql.SQLException
三。异常的处理方式try{}catch{}
四。throws抛出异常
当在方法中产生异常时,当前方法不知该如何处理当前异常的时候,可以通过throws向上抛,如果被如果调用当前方法的方法也没有处理可以继续向上抛,知道try{}catch{}finally{},如果一一直没有try{}catch{}则会在main方法中运行时产生异常时,程序终止。
当子类重写带有异常的方法时,子类抛出的范围不能大于父类抛出的异常。
五。throw手动抛异常
六。自定义异常
步骤:
1)继承已有异常类
2)生成一个serialVersionUID
3)写几个重载的构造方法
4)自定义的异常通过throw抛出
5)e.printStackTrace(),e.getMessage()方法获取异常信息
public class TestRandomAccessFile {
public static void main(String[] args) {
try{
math(0);
}catch (Exception e ){
System.out.println(e.getMessage());
}
}
public static void math(int a) throws RuntimeException{
if(a==0){
throw new MathExecption("计算错误");
}
}
}
public class MathExecption extends RuntimeException {
private static final long serialVersionUID = 7517618000614643801L;
public MathExecption(String message){
super(message);
}
}