什么时候用 try-catch 和 throws ?

人生之路坎坎坷坷,跌跌撞撞在所难免。但是,不论跌了多少次,你都必须坚强勇敢地站起来。任何时候,无论你面临着生命的何等困惑抑或经受着多少挫折,无论道路多艰难,希望变得如何渺茫,请你不要绝望,再试一次,坚持到底,成功终将属于勇不言败的你。

导读:本篇文章讲解 什么时候用 try-catch 和 throws ?,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

处理异常的方式有try-catch 和 throws
那问题就来了,什么时候用try-catch,什么时候用throws 呢?

先说一下二者的区别

throws是将异常抛出,后续代码不再执行。
try…catch是将异常抛出,并且要继续执行后面的代码
try-catch方式定义格式:

try {
    可能出现异常的代码; 
} catch(异常类名1 变量名1) { 
    异常的处理代码1; 
}catch(异常类名2 变量名2) { 
    异常的处理代码2; 
}finally {
	// 善后工作【关闭I/O等资源】
}

注意:

  1. 像数据库连接、输入输出流、网络编程Socket等资源,JVM是不能自动的回收的,我们需要自己手动的进行资源的释放。此时的资源释放,就需要声明在finally中。
  2. catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下无所谓。
    catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面。否则,报错
  3. 常用的异常对象处理的方式:String getMessage(), printStackTrace()

throws方式定义格式:

public void 方法() throws 异常类名 { 
}

什么时候用try-catch,什么时候用throws 呢?

  1. 如果方法A 调用方法B, B调用C, 在B或者C里面可能会有异常抛出,那就应该在A里面用try-catch 去处理这个异常,而B或者C则应用throws进行处理
  2. try catch一般在最上层使用,底层的都使用throws向上抛出。如果即在最上层做try catch,又在底层方法做try catch,程序会变的很混乱。一般可预见的错误,比如空指针,你完全可以在最上层比如controller层进行判断下,不要让null进入底层方法引起不必要的麻烦
  3. 如果父类中被重写的方法没有throws方式处理异常,则子类重写的方法也不能使用throws,意味着如果子类重写的方法中有异常,必须使用try-catch-finally方式处理。
    示例代码:
public class ExceptionDemo { 
    public static void main(String[] args) { 
        System.out.println("开始"); 
//         method(); 
        try {
            method2(); 
        }catch (ParseException e) { 
            e.printStackTrace(); 
        }
        System.out.println("结束"); 
    }
    //编译时异常 
    public static void method2() throws ParseException { 
        String s = "2048-08-09"; 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
        Date d = sdf.parse(s); 
        System.out.println(d); 
    }
    //运行时异常 
    public static void method() throws ArrayIndexOutOfBoundsException { 
        int[] arr = {1, 2, 3}; 
        System.out.println(arr[3]); 
    } 
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/133727.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!