1 异常
1.1 异常概述
- 异常:异常就是Java程序在运行的过程中出现的错误。
1.2 异常的由来
- 问题是现实生活中一个具体的事务,是可以通过Java的类的形式进行描述的,并封装成对象。
- 其实对不正常情况进行描述后的对象的体现在Java中就是异常。
1.3 异常的分类
- 异常体系的超类是Throwable。
- Throwable下面有2个子类Error(错误)和Exception(异常)。
- Exception下面有RuntimeException(运行期异常)和编译期异常(Exception的子类除去RuntimeException的)。
1.4 JVM默认如何处理异常
- 如果程序出现了问题,我们没有处理,那么JVM会做默认的处理。
- 把异常的名称,原因和出现的位置等信息输出在控制台。并终止程序。
- 示例:
package com.xuweiwei; /** * @author 许威威 * @version 1.0 */ public class ExceptionDemo { public static void main(String[] args) { int a = 10 / 0; System.out.println("over"); } }
1.5 异常处理方案
1.5.1 try……catch……finally方式
- 格式
try{ 可能出现异常的代码; }catch(异常名 变量){ 处理异常; }finally{ 释放资源; }
- 示例:
package com.xuweiwei; /** * @author 许威威 * @version 1.0 */ public class ExceptionDemo2 { public static void main(String[] args) { try { int i = 10 / 0; } catch (Exception e) { e.printStackTrace(); } System.out.println("over"); } }
- 示例:
package com.xuweiwei; /** * @author 许威威 * @version 1.0 */ public class ExceptionDemo3 { public static void main(String[] args) { try { int[] arr = {1}; System.out.println(arr[1]); }catch (ArithmeticException e){ System.out.println("除数不能为0"); }catch (IndexOutOfBoundsException e){ System.out.println("数组访问越界"); } System.out.println("over"); } }
1.5.2 throws方式
- 使用场景:定义功能方法的时候,需要把出现的问题暴露出来让调用者去处理。那么就通过throws在方法上标识。
- 示例:
package com.xuweiwei; /** * @author 许威威 * @version 1.0 */ public class ExceptionDemo3 { public static void main(String[] args) { try { int[] arr = {1}; System.out.println(arr[1]); }catch (ArithmeticException e){ throw new RuntimeException("除数不能为0"+e.getMessage()); }catch (IndexOutOfBoundsException e){ throw new RuntimeException("数组访问越界"+e.getMessage()); } System.out.println("over"); } }
1.6 编译期异常和运行期异常的区别?
- 编译期异常必须处理。
- 运行期异常可以不处理。
1.7 throw和throws的区别?
- throws:
- ①用在方法声明后面,跟的是异常类名。
- ②可以跟多个异常类名,用逗号隔开。
- ③表示抛出异常,由该方法的调用者来处理。
- ④throws表示出现异常的一种可能性,并不一定会发生这些异常。
- throw:
- ①用在方法体内,跟的是异常对象名。
- ②只能抛出一个异常对象名。
- ③表示抛出异常,由方法体内的语句处理。
- ④throw表示抛出了异常,执行throw则一定会抛出某种异常。
1.8 如何处理异常?
- 原则:如果该功能内部可以将问题处理,用try,如果处理不了,就用throws抛出异常。
- 区别:
- ①后续程序需要运行就try。
- ②后续程序不需要运行就thorws。
1.9 finally关键字
1.9.1 finally关键字的特点
- 被finally控制的语句体一定会执行,除非在执行finally之前JVM退出了。
1.9.2 finally的作用
- 用于释放资源,在IO流操作和数据库操作中经常遇见。
2 File
3 递归
原文地址:https://www.cnblogs.com/xuweiweiwoaini/p/9363306.html
时间: 2024-11-05 21:38:56