Java异常处理

在执行程序过程中,我们有时候会看到控制台给出xxxException提示,那么这些提示代表什么呢?今天本文主要讲解Exception相关内容经常会遇到的一些Exception和捕获异常的方法。


什么是异常?

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。引发异常的可能有很多,有的是用户错误触发的,有的是程序错误触发的,还有一些物理因素触发的异常。所有的异常都是java.lang.Exception的子类。


异常的分类:

1、检查性异常(Checked Exception):

又称为非运行时异常,当程序受到检查性异常时,只会暂停而不会停止程序的运行,程序中抛出的异常被捕获后经过JVM处理或者人为的处理后,程序继续恢复运行。检查性异常在程序编译时不能被简单的忽略。

2、运行时异常(Runtime Exception):

又称为非检查性异常,是在程序运行过程中发生的异常,会自动终止程序的运行。运行时异常是可能被程序员避免的异常,可以在程序编译时被忽略。

3、错误(Error):

错误不是异常,在代码中通常会被忽略。


Java常见异常:

检查性异常:

异常名称异常描述
ArrayIndexOutOfBoundsException数组范围越界异常,即使用的索引值不在数组的正确索引范围内。
ArrayStoreException试图将错误类型的对象存储到一个对象数组时抛出的异常。
ClassCastException类型转换异常,当试图将对象强制转换为不是实例的子类时,抛出该异常。
IllegalArgumentException抛出的异常表明向方法传递了一个不合法或不正确的参数。
IllegalStateException在非法或不适当的时间调用方法时所抛出的异常。
IllegalThreadStateException线程没有处于请求操作所要求的适当状态时抛出的异常。
IndexOutOfBoundsException排序索引超出范围时所抛出的异常。
NullPointerException空指针异常,没有指向的对象时抛出该异常。
NumberFormatException数值转换异常,当程序试图将字符串转换成某种数值类型未成功时,抛出该异常。
UnsupportedOperationException当程序不支持请求的操作时抛出的异常。
StringIndexOutOfBoundsException字符串索引越界异常,当操作字符串时,如果所以为负数或者超出字符串长度,抛出该异常

运行时异常:

异常名称异常描述
IllegalAccessException拒绝访问一个类的时候,抛出该异常。
InstantiationException试图使用 Class 类中的 newInstance 方法创建一个类的实例,而指定的类对象因为是一个接口或是一个抽象类而无法实例化时,抛出该异常。
ClassNotFoundException应用程序试图加载类而找不到相应的类时,抛出该异常。
InterruptedException抛出的异常表明向方法传递了一个不合法或不正确的参数。
NoSuchFieldException程序请求的变量不存在时抛出的异常。
NoSuchMethodException程序请求的方法不存在时抛出的异常。

异常捕获方法:

1、try...catch...捕获异常:

public static Connection getConnection() {
    try {
        return DriverManager.getConnection(url,user,passwd);
    }catch(SQLException e) {
        e.printStackTrace();
        return null;
    }
}

2、try...catch...多重捕获异常:

try {
    //代码块
}catch(Exception a) {
    a.printStackTrace();
}catch(Exception b) {
    b.printStackTrace();
}catch(Exception c) {
    c.printStackTrace();
}

3、try...catch...finally...捕获异常:

public void save(Emp emp) {
    Connection conn = null;
    try {
        conn = DriverManager.getConnection(url,username,password);
    }catch(SQLException e) {
        e.printStackTrace();        
    }finally {
        conn.close();
    }
}

4、throw/throws关键字捕获异常:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //代码块
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值