首页 > 编程语言 > 详细

JAVA基础06

时间:2021-08-01 22:44:53      阅读:24      评论:0      收藏:0      [点我收藏+]

异常

什么是异常

指程序运行中出现的不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等

分类

  • 检查型异常

  • 运行时异常

    由程序逻辑错误引起,应从逻辑角度尽可能避免这类异常发生

    • 数组下标越界异常
    • 空指针异常
    • 算术异常
    • ....
  • 错误ERROR

    Error类对象由java虚拟机生成并抛出

ERROR通常是致命的错误,是程序无法控制和处理的,发生时JVM会终止线程,而Exception通常是可以被程序处理的,并在程序中应尽可能去处理这些异常

处理

  • 常用关键字:try 、catch、finally、throw、throws

  • 异常对象的两个方法

    Exception e=new Exception();
    String msg=e.gewMessage();
    //获取异常简单描述信息,调用异常对象的toString方法?
    e.printStackTrace();
    //打印追踪堆栈的信息
    

    1.抛出

    ? 在方法声明位置上使用throws关键字,抛给上一级(谁调用抛给谁)

    但是只能抛出相应的异常或其父类异常(抛的异常可以更大不能更小)

    2.捕捉

    ? 一般main方法采用捕捉,否则异常会抛给JVM,JVM会终止程序

public static void main(String[] args) {
    int a=10,b=0;
    int c;
   try {//try监控区域,尝试一些可能有异常的程序
       c = a/b;
    }catch (ArithmeticException e){//捕获异常  
       System.out.println("发生异常,被除数不能为0");
   } finally{//善后工作
       System.out.println("结束");
   }
}
  • try不能单独使用

  • catch后面是想要捕获的异常类型

  • 建议在catch的代码块里打印异常追踪的堆栈信息(此信息由上往下看,忽略Sun的代码)

  • 可以捕获多个异常,使用多个catch

    注意catch的异常上面的必须小于下面的异常范围,从小到大捕获

  • finally最后一定会执行

    无论是否出现异常,finally中的代码一定会执行,除非在try中执行System.exit(0);程序,通常在其中完成资源的释放、关闭

    public static int m(){
     int i=100;
     try{
         return i;
     }finally{
         i++;
     }
    }
    

    finally中的i++;一定执行,且由于return;后方法结束,所以会在return之前执行,但是这里返回值是100,不是101!!因为要遵循java语法规则,由上至下执行,return在i=100;后面,所以返回100!!

    这里反编译后发现实际执行:

    int i=100;
    int j=i;
    i++;
    return j;//100!!!!
    
  • 快捷键:Ctrl + Alt + T

自定义异常

  • 创建异常类之后,之后继承Exception类
  • 提供两个构造方法,一个无参,一个带有String参数
public class MyException extends Exception{
    private String detail;
    public MyException(){}
    public MyException(String s){
        super(s);
    }
}
  • 配合throw(没有s!!!!)使用

    throw new MyException("这里发生了***异常");
    //抛出后其方法体自动结束
    

JAVA基础06

原文:https://www.cnblogs.com/yangzx-hust/p/15087511.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!