标签:System catch finally 注意事项 println 异常 out
finally代码块
finally定义:
有一些特定的代码无论异常是否发生,都需要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。
而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会被执行的。
格式:
try{ 可能产生异常的代码 }catch(定义一个异常的变量,用来接收try中抛出的异常对象){ 异常的处理逻辑,产生异常之后怎么处理异常 一般在工作中,会把异常的信息记录到日志中 } ...... catch可以拥有多个 catch(异常类名 变量名){ }finally{ 无论是否出现异常都会执行 }
注意:
1.finally不能单独使用,必须和try一起使用
2.finally一般用于资源释放(资源回收),无论程序是否出现异常,最后都要资源释放(IO)
public static void main(String[] args) { try { readFile("d:\\a.txat"); } catch (Exception e) { //异常的处理逻辑 e.printStackTrace(); }finally { //无论是否出现异常,都会执行 System.out.println("资源释放"); } } public static void readFile(String fileName) throws Exception { /* 判断后缀名是否正确,不正确抛出异常给出对应的错误提示 */ if (!fileName.endsWith(".txt")){ throw new IOException("文件的后缀名不对"); } System.out.println("路径没有问题,读取文件"); }
运行结果:
异常注意事项-多异常的捕获处理
多个异常使用捕获又该如何处理呢:
1.多个异常分别处理
public static void main(String[] args){ // 1、多个异常分别处理 try { int[] arr = {1,2,3}; System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3 } catch (Exception e) { System.out.println(e); } try { List<String> list = new ArrayList<>(); System.out.println(list.get(0));//java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 } catch (Exception e) { System.out.println(e); } }
运行结果:
2.多个异常一次捕获,多次处理,
public static void main(String[] args) { try { //数组异常 int[] arr = {1,2,3}; System.out.println(arr[3]); //集合异常 ArrayList<Integer> list = new ArrayList<>(); System.out.println(list.get(3)); }catch (ArrayIndexOutOfBoundsException e){ System.out.println(e); }catch (IndexOutOfBoundsException e){ System.out.println(e); } System.out.println("后续代码"); }
3.多个异常一次捕获一次处理
public static void main(String[] args) { try { int[] arr01 = {1,2,3}; ArrayList<String> list = new ArrayList<>(); System.out.println(list.get(0)); }catch (Exception o){ System.out.println(o); }
System.out.println("后续代码");
}
标签:System,catch,finally,注意事项,println,异常,out 来源: https://www.cnblogs.com/aqhk/p/16458146.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。