Java学习——异常

Java学习——异常

每日好句

所谓的法,公道,正义,如果不一视同仁,那正义和法律还有什么意义呢?年轻人没有一些略显狂妄的理想,又怎么算得上是年轻人呢?我相信事在人为。只要我努力,未必不能实现!”

异常

在这里插入图片描述

什么是异常(Exception)?
Java代码在运行时期发生的问题就是异常;
在Java中,把异常信息封装成了一个类(Exception);

异常分类:

  • Throwable
    Throwable类是Java中所有错误或异常的超类,即祖宗类;

    • 常用方法
    • String getMessage() 返回此 throwable 的详细消息字符串
    • String toString() 返回此 throwable 的简短描述
    • void printStackTrace() 打印异常的堆栈的跟踪信息
  • Exception
    Exception类及其子类是Throwable的一种形式,用于表示Java程序中可能会产生的异常,并要求对产生的异常进行合理的异常处理;

    • Exception异常又主要分为两种:
      一种是派生于RuntimeException异常;

      • RuntimeException
        RuntimeException类是Exception的子类(又称为非受检异常);
        RuntimeException类及其子类只能在Java程序运行过程中出现(运行时异常);
        • 通常有以下几种情况:
        • 错误的类型转换
        • 访问的null指针
        • 数组访问越界
        • 算数异常
          注意:RuntimeException异常,一般都是代码逻辑出现问题;

      一种是除RuntimeException体系之外的其他异常;

      • checkedException
        checkedException类是Exception的子类(又称为受检异常);
        checkedException类在Java程序还未开始运行时出现(非运行时异常);
        • 通常有以下几种情况:
        • 打开一个不存在的文件
        • 没有找到具有指定名称的类
        • 操作文件异常

受检异常是编译器要求必须处理的异常,必须使用 try catch 处理,或者使用 throws 抛出,交给上层调用者处理;

  • Error
    Error类是Throwable的一种形式,与Exception平级,用于表示系统内部错误,这类错误由系统进行处理;

异常处理:

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

  • try…catch处理方式
    捕获:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理捕获异常;

  • 语法格式:

    try {
    		//需要被检测的语句。
    	}
    	catch(异常类 变量) { //参数。
    		//异常的处理语句。
    	}
    	finally {
    		//一定会被执行的语句。
    	}
    	
    	try:该代码块中编写可能产生异常的代码。
    	catch:用来进行某种异常的捕获,实现对捕获到的异常进行处理。
    	
    	注意:
    		try 语句块是必不可少的,catch 和 finally 语句块可以根据情况选择其一或者全选。
    		你可以把可能发生错误或出现问题的语句放到 try 语句块中,将异常发生后要执行的语句放到 catch 语句块中,而 finally 语句块里面放置的语句,不管异常是否发生,它们都会被执行。
    
  • throw处理方式

    • 语法格式:

      throw new 异常类();//产生异常,直接捕获处理
      
  • throws处理方式
    当我们不想处理异常,或者没有能力处理的时候,我们可以选择抛出异常,谁调用方法谁处理异常,使用关键字throws在方法的声明出抛出异常;

    • 语法格式:

        权限修饰符 返回值类型  方法名(形参列表) throws 异常类型1,异常类型2….{
        			//代码体
        			} 
      
  • 多异常处理方式
    对代码进行异常检测,并对检测的异常传递给catch处理。对每种异常信息进行不同的捕获处理。

    • 语法格式:

        try{	
        	throw new Exception();//产生异常,直接捕获处理
        }
        catch(XxxException e){
        	//处理方式	
        }catch(YyyException e){
        	//处理方式	
        }catch(ZzzException e){
        	//处理方式	
        }
      

throws与throw的区别

  1. 作用不同:
    throw用于在程序中抛出异常;
    throws用于声明在该方法内抛出了异常;
  2. 使用位置不同:
    throw位于方法体内部,用于单独语句使用;
    throws需要跟在方法参数列表后面,不能单独使用;
  3. 内容不同:
    throw抛出一个异常对象,且只能有一个throws后面跟异常类,且可以跟多个异常类;

异常练习

需求:写一个方法,接受考试成绩,如果考试成绩的范围在0-100之间则属于正常,否则属于异常,当成绩不在0~100范围内,抛出一个运行时异常或者编译时异常,阻止程序继续向下执行

代码:

 public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入5个考试成绩");
        System.out.println();
        for(int i=1;i<10;i++){
            System.out.print("请输入第"+i+"个考试成绩:");
            int a=scanner.nextInt();
            ass(a);
            if (i==5){
                System.exit(0);
            }
        }
//        try {
//            ass(a.txt);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }
    public static void ass(int b) throws Exception {
        if (b>=0&&b<=100){
            System.out.println("考试成绩符合要求:"+b);
        }else {
            throw new Exception();
        }
//        System.out.println("考试成绩不符合要求");
    }
}

  • 鄙人拙作/拙笔,有不当之处,还请指教。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值