Java------异常

目录

异常

常见异常:ArithmeticException   算数异常

异常处理:

编译期异常与运行期异常

自定义异常


异常

异常是程序在运行过程中,出现的不正常情况。

    异常:广义:任何程序出现的问题     狭义:程序上出现的可以解决的一些问题(代码解决)。             

    例如:用户输入的数据有问题          

   异常指的并不是语法错误。语法错误,编译不能通过,不会产生字节码文件,根本不                       能运行。

  Java中默认的异常处理机制:将出现的异常,按不同的类型分类,为每一种封装了一个类                                                              来进行表示。出现某种类型的异常情况时,会抛出此类的对                                                              象,然后终止虚拟机的运行

常见异常:ArithmeticException   算数异常

                  ArrayIndexOutOfBoundsException   数组索引越界

                 StringIndexOutOfBoundsException   字符串索引越界

                 ClassCastException    类型转换异常

                 NullPointerException  使用null中的方法/属性   在Java中俗称空指针

                 NumberFormatException  数据格式化异常

异常处理:

                在编码时,就针对可能出现的问题代码(经验)    提前编写一些处理机制

                 程序运行

                 出现异常

                 执行处理机制

                 继续运行后续的程序

                 try{

                         编写可能出现问题的代码

                          }catch( 异常类型 ){

                                  处理机制 

                                         }finally{                       

                                            //异常没有捕获到,后面的代码不能执行,但是finally里面的代码可以                                               执行             必须执行的代码}

注意: 无论是在try中执行return还是catch中执行return  都必须执行finally

        int b = 5;
        int a = 0;
        try {
            System.out.println(b/a);
        }catch (ArithmeticException ai){
            ai.printStackTrace();//将异常信息打印到控制面板上
            System.out.println("算数错误");
        }finally{//finally  是一个关键字 是try语句中必须执行的语句
            System.out.println(b/a);

                  }

编译期异常与运行期异常

     编译期异常:在编译期间就会主动提示程序员要进行处理的异常

                          FileNotFoundException(文件找不到异常)

     运行期异常:在编译期间不会主动提示程序员进行处理的异常

                          ArrayIndexOutOfBoundsException   数组索引越界

                         StringIndexOutOfBoundsException   字符串索引越界

     区别在于异常有没有继承RuntimeException(继承就是运行期异常)

运行期异常

    当不满足某种条件时,主动抛出异常

    会用到  throw new  异常构造方法("异常的原因") 

          如: throw new RunTimeException();
           
    public static void sj(int a,int b ,int c) throws YCException {
        if (a + b <= c || a + c <= b || b + c <= a){//不满足的条件 也就是满足这个条件直接抛出异常
           throw  new YCException("无法构成三角形");
        }
    }

自定义异常

public class 异常类名 extends Exception/RuntimeException{
   public 异常类名(String msg){
                super(msg);
         }
}
public class YCException extends Exception{
    public YCException(String message) {
        super(message);
    }
}

throws  和  throw 的区别

    throws:用在方法声明部分,表示此方法中又可能出现某种类型的异常,此方法不处理异常,谁调用谁异常。

   throw:在方法体中,抛出一个具体的异常对象。该方法终止运行,在异常对象的构造方法中自定义异常的原因

  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值