异常

java.lang.Throwable类,这个类是java中所有错误和异常的超类,异常可以被开发人员捕捉和处理;而错误一般是系统错误,一般不需要开发人员处理(也无法处理),比如内存溢出。

一、异常:

1.编译时异常(又称非运行异常,在Java的标准包java.lang java.util 和 java.net 中定义的异常都是非运行异常,可检测异常)

输入输出异常:IOException

操作数据库异常:SQLException

2.运行时异常(非可检测异常)

RuntimeException是java中所有运行时异常的父类,实际运行时出现的都是它的子类,看看RuntimeException的Java doc就可以随便列出几个:
 
①,ClassCastException类型强制转换异常
     Object x = new Integer(0);
     System.out.println((String)x);
当试图将对象强制转换为不是实例的子类时,抛出该异常

②,ArithmeticException算术异常类
int a=5/0;
一个整数“除以零”时,抛出异常

③,NullPointerException空指针异常类
String s=null;
int size=s.size();
当应用程序试图在需要对象的地方使用 null 时,抛出异常

④,StringIndexOutOfBoundsException
"hello".indexOf(-1);
指示索引或者为负,或者超出字符串的大小,抛出异常

⑤,NegativeArraySizeException数组负下标异常
数组大小为负值异常。当使用负数大小值创建数组时抛出该异常
String[] ss=new String[-1];
如应用程序试图创建大小为负的数组,则抛出异常

⑥,IllegalArgumentException参数异常
抛出的异常表明向方法传递了一个不合法或不正确的参数

⑦,NumberFormatException数字格式异常
当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常

⑧,ArrayIndexOutOfBoundsException数组下标越界异常
当使用的数组下标超出数组允许范围时,抛出该异常

⑨,ClassNotFoundException找不到类异常
当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常

异常处理机制为:抛出异常,捕捉异常。

try 块:用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。
catch 块:用于处理try捕获到的异常。
finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。在以下4种特殊情况下,finally块不会被执行:
1)在finally语句块中发生了异常。
2)在前面的代码中用了System.exit()退出程序。
3)程序所在的线程死亡。
4)关闭CPU。

throw、throws抛出异常

class Bar{

//throws标注在方法名之后,提示调用者,可能抛出的异常,让调用者不要忘记捕获

public void Enter(int age) throws IllegalArgumentException {

if(age<18){ //抛出非受查异常,但是并不捕获,捕获的动作交给调用者执行

throw new IllegalArgumentException("年龄不合格");

}else{ System.out.println("欢迎光临"); } } }

二、错误:

内存溢出OutOfMemoryError

线程死锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值