异常的概念

程序正常的情况下可以有顺利运行,遇到用户非法输入,文件找不到磁盘空间已满、数据库连接错误等问题,如果程序不处理,就会崩溃。

异常的类型

1,异常的根类型:java.lang.Thtowable

只有它或它的子类类型,才能用于catch(异常类型e)语句中的异常类型,用于“捕获异常”

换句话说,如果要自定义异常,必须继承Throwable或他的子类

2、Throwable的两大子类:Error和Exception

Error:合理的应用程序不应该通过捕获来解决的严重错误。例如:VirtualMachineError虚拟机错误(StackOverflowError栈溢出,OutOfMemoryError堆内存溢出)

Exception:合理的应用程序应该通过代码避免或捕获来解决的异常。

3、Exception的两大类:编译时异常和运行时异常

  • 运行时异常:RuntimeException或它的子类

    • 例如:ArrayIndexOutOfBoundsException数组下标越界异常

    • 例如:NullPointerException空指针异常

    • 例如:ClassCastException:类型转换异常

    • 例如:ArithmeticException:算术异常

    • 例如:InputMismatchException:输入不匹配异常

    • 例如:NumberFormatException:数字格式化异常

  • 编译时异常:除了运行时异常都是编译时异常

    • 例如:IOException:输入输出异常

    • 例如:FileNotFoundException:文件找不异常

    • 例如:SQLException:sql执行错误

 和异常相关的几个关键字

1,try:尝试执行可能会发生异常的代码

2,catch:尝试捕获try中发生的异常,

3,finilly:无论try中是否发生异常,也无论catch是否可以捕获异常,也不管try和catch中是否有return语句,都要执行,除非在try或catch中执行了System.exit(0)语句

4,throw:用于手动抛出异常

5,throws:表示某个方法内部都没有处理xx异常,抛给调用者处理,在方法的签名中,显示声明抛出哪些异常

自定义异常

1、必须继承Throwable或它的子类,一般继承Exception或RuntimeException

2、尽量保留两个构造器:无参和有参(message)

3、加序列化版本ID

4、自定义异常类型的对象只能使用throw语句抛出

你可能感兴趣的:(异常的概念)