异常类的使用,作用,处理,自定义异常

异常类的作用是为了完善java程序的健壮性,适当地处理异常有利于程序的正常进行。
异常在java中以类的方式存在,每个异常类都可创建对象,在发生异常jvm会自动new对象,并且将new的对象抛出,打印到控制台。

总的来说异常类(exception)的子类有两大类:
直接继承exception的是编译时异常
继承exception的子类runTImeException是运行时的异常

编译时异常是需要我们去处理的
运行时异常可以选择进行处理

对异常的处理包括两种方式:
在方法声明的时候使用throws关键字,抛给上一级
使用try…catch语句进行异常的捕捉

Throws的使用
因为ClassNotFoundException 是编译时异常(父类是exception,而不是runtimeexception),不进行处理的话就会报错。
(此时main方法没有抛异常或捕捉异常,程序报错)

	public static void main(String[] args) {
    dosome(); //未进行处理,报错
}
public static void dosome() throws ClassNotFoundException{
}

此时main方法抛出异常:(一般不建议在main上抛出异常,程序会结束)为了程序的健壮性,一般main方法中的异常进行捕捉。

public static void main(String[] args) throws ClassNotFoundException{
    dosome(); //编译通过
}
public static void dosome() throws ClassNotFoundException{
}

进行异常捕捉:catch可以写多个,这样写有利于程序的调试。(建议一个异常写一个catch,如果catch后面写的是比较大的类。那么下一个catch只有比这类更大才行。Catch是从上往下依次匹配,类从小到大)

public static void main(String[] args){
    try {
        dosome();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch ( Exception c ){ 
    	c.printStackTrace();
  	} 
}
public static void dosome() throws ClassNotFoundException{
}

从jdk8开始catch支持:
catch( ClassNotFoundException | FileNotFoundException e){}
中间可以使用 逻辑运算符


如果一个方法抛出异常,则该方法就会结束(作用类似于return)


异常对象中的两个重要方法:

String getMessage(); 获取异常简单信息(异常类构造方法后面传的参数)

printStacklTrace(); 打印异常堆栈信息(常用)


关于try…catch中的finally语句:
在finally子句中的代码是最后执行的,并且一定会执行,即使try语句块中出现了异常。
finally子句必须和try同时出现,不能单独编写。

try{
}catch(Exception e){
	e.printStackTrace();
}finally{

}

通常在finally中完成资源的释放,即使try代码块出异常,finally也会执行(只有System.exit(0) 可以让finally不执行)


Try 可以和finally连用:

try {
    System.out.println("123");
    return;
}finally {
    System.out.println("456");
}    // 123     456

即使try中有return语句,finally也会执行


自定义异常(重点):java中提供的异常在实际开发中可能不够用
如何自定义:

  1. 编写一个类继承Exception或者RuntimeException
  2. 提供两个构造方法,一个无参,一个String参数的(接收简述信息)。
public class MyException extends RuntimeException{
    public MyException() {
        super();
    }
    public MyException(String message) {
        super(message);
    }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值