zoukankan      html  css  js  c++  java
  • 【从零开始学Java笔记】异常处理

    大家可以关注作者的账号,关注从零开始学Java笔记文集。也可以根据目录前往作者的博客园博客进行学习。本片文件将基于黑马程序员就业班视频进行学习以及资料的分享,并记录笔记和自己的看法。欢迎大家一起学习和讨论。

    【从零开始学Java笔记】目录

    什么是异常?

    异常是指不正常,我们在代码的时候出现的编译或者运行时的错误。我们在写代码的时候,经常的出现一些小问题, 那么为了方便我们处理这些问题,java为我们提供了异常机制。异常包含了错误的类型、原因以及位置
    异常的体系结构:
    Throwable (最项层)
    Error :出现的不能够处理的严重问题
    Exception:可以处理的问题

    异常的处理方式

    1.jvm处理异常的方式:
    如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行,并且还终止了程序,异常后面的代码将不在执行。

    2.捕获处理
    try...catch语句
    格式:

     try {
      有可能出现问题的代码;
    } catch(ArithmeticException ae) {
      处理异常;
        }
    

    try...catch的执行顺序:
    首先执行try语句,如果发现异常,异常下面的代码不在执行,直接跳入catch语句中,catch语句结束后,整个try...catch结束,如果没有发现异常,try语句执行结束后,try...catch直接结束, 不在执行catch语句

    3.抛出去
    当我们不想处理异常,或者没有能力处理的时候,我们可以选择抛出异常,谁调用方法谁处理异常,使用关键字throws在方法的声明出抛出异常

    举例:

    import java.io.FileWriter;
    import java.io.IOException;
    
    
    public class ExceptionDemo2 {
    	public static void main(String[] args) throws Exception {
    		//method();
    		
    		function();
    		
    	}
    	
    	public static void function() throws Exception {
    		FileWriter fw = new FileWriter("a.txt");
    	}
    
    	private static void method() {
    		try {
    			System.out.println(1);
    			//System.out.println(2 / 0);
    			System.out.println(2);
    		} catch(ArithmeticException ae) {
    			System.out.println("除数不能为0");
    		}
    		
    		System.out.println(3);
    	}
    
    }
    

    处理多个异常

    如何处理多个异常:
    1.可以使用多个try.. .catch语句
    2.使用一个try和多个catch

    多个catch之间的顺序:
    多个catch之间可以有子父类
    平级之间没有顺序关系
    如果有子父类,父类异常必须放在后面

    Throwable类

    public class ExceptionDemo3 {
    	public static void main(String[] args) {
    		try {
    			System.out.println(2 / 0);
    		} catch (ArithmeticException e) {
    			// String getMessage() : 原因
    			// System.out.println(e.getMessage());
    
    			// String toString() 类型和原因
    			// System.out.println(e.toString());
    
    			// void printStackTrace():类型原因和位置,和jvm处理不同,不会终止程序运行
    			e.printStackTrace();
    		}
    
    		// System.out.println("hello");
    	}
    
    }
    

    finally

    finally:组合try... catch使用,用于释放资源等收尾工作,无论try...catch语句如何执行,finally的代码定会执行,用于处理一些收尾工作,例如释放资源

    try {
        有可能出现问题的代码;
    } catch(异常对象) {
        处理异常;
    } finally {
        释放资源;
        清理垃圾;
    }
    

    异常的分类

    运行时期异常: RuntimeException的子类就是运行时期异常,在编译时期可以自由选择处理或者不处理
    编译时期异常:是Exception的子类,非RuntimeExcpetion的子类,在编译时期必须处理

  • 相关阅读:
    python-day1
    go 字符串方法
    str,转换int,相互
    go 文件打包上传本地测试环境
    通联收银宝,官方文档
    go uuid
    go xid
    golang decimal处理插件包 大数字处理
    图像处理 bimg
    golang strings,常用函数
  • 原文地址:https://www.cnblogs.com/zllk/p/12656772.html
Copyright © 2011-2022 走看看