java——异常处理
来源:互联网 发布:光环大数据 视频下载 编辑:程序博客网 时间:2024/06/03 23:01
1.异常处理
* Throwable(异常处理的父类)
* Error 系统崩溃 或 数据库崩溃(跟代码没有关系)
* Exception 异常(是更代码有关系的)
* RuntimeException 运行异常
*
* 出现异常 系统如何解决(谁来解决)
* 2.解决的方式
* 1.main函数自己解决
* 2.把问题抛给上级解决(谁调用的main 谁去解决)
* 交给JVM虚拟机去解决
* JVM虚拟机如何解决?报错
* 打印错误信息 错误发生在什么类的什么位置
public class Demo01 { public static void main(String[] args) { /* * 需求: * 1.空指针异常 * 2.角标越界异常 * 3.算数异常 */ int[] array = {1,2,3,4,5}; // 角标越界异常// System.out.println(array[5]); // 算数异常// System.out.println(10/0); // 空指针异常(访问一块不属于你内存的区域) array = null; System.out.println(array[0]); }}
3.解决异常方式
* try…catch…finally
* try:尝试 指测试这个异常
* catch:捕获 指捕获这个异常
* finally 指异常结束后做的事
*
* 捕获异常流程:
* 1.发生异常
* 2.根据发生的异常 产生对应的异常对象
* 3.这个异常对象会返回给调用者
* 4.如果调用者处理了这个异常(添加try…catch)
* 异常对象会跟catch进行匹配,匹配上执行catch中语句
* 程序会继续运行
* 5.如果调用者没有处理这个异常 默认交给JVM去处理
* 根据产生异常对象 打印对应错误信息
* 程序停止
public class Demo02 { public static void main(String[] args) { TestException test = new TestException(); try { // 可能发生异常的代码 int num = test.fun(10, 0); // 这块返回了异常对象 // new ArithmeticException("/ by zero"); System.out.println(num); }catch(ArithmeticException e){ //捕获异常 该怎么办 // catch 如何就能捕获异常 // ArithmeticException e = new ArithmeticException("/ by zero"); // catch会匹配这个异常对象 // 如果匹配上了就执行catch中的语句 // 捕获异常后 程序会继续执行 System.out.println("吃药了没?除数为0了"); } System.out.println("你猜我执行了吗?"); }}class TestException{ // 报异常方法 public int fun(int a, int b) { /* * 这里发生了算数异常 * 相当于产生了一个异常对象 * new ArithmeticException("/ by zero"); * 一旦发生异常 系统会产生一个对应异常对象 * 发生异常后 谁调用我 这个异常就给谁 * 处理不了 就给JVM虚拟机去处理 * JVM默认处理方法: * 打印错误信息(根据异常对象的类型 去打印对应错误信息) * 打印完 会结束你的程序 */ return a / b; }}
4.finally
* 记住:不管你异常有没有发生 有没有被匹配到 都会执行
*
* finally有什么作用?
* 可以关闭系统资源 避免资源的浪费
* (例如 关闭输入流 和 关闭数据库)
public class Demo04 { public static void main(String[] args) { try { System.out.println(10/1); return; } catch (ArithmeticException e) { System.out.println("除0 了"); }finally { System.out.println("你看我执行了吗?"); } System.out.println("我是下面的语句"); }}
构造方法
* File(String pathname)
* File(String parent, String child)
* File(File parent, String child)
public class Demo09 { public static void main(String[] args) { // 使用构造方法 创建一个文件路径 // 使用的相对路径 (参照物是你的工程) File file1 = new File("src/xxf.txt"); // 查看文件是否存在 System.out.println(file1.exists()); String parent = " /Users/lanou/eclipse-workspace/SH-day20/src/com/lanou3g"; String child = "Demo09.java"; // 使用父子路径创建 file对象 File file2 = new File(parent, child); System.out.println(file2.exists()); }}