当前位置: 首页 > news >正文

JAVASE(复习)——异常

所有的异常都是在java.lang包中的Throwable类中 

一、Exception 和 Error 的区别

exception:程序本身发生的异常,可以捕获抛出异常,一般用try—catch—finally捕获。

error:发生在jvm层面的错误,程序无法处理。

二、编译时异常和运行时异常

  • 编译时异常(Exception)

    • 都是Exception类及其子类

    • 必须显示处理,否则程序就会发生错误,无法通过编译

  • 运行时异常(RuntimeException)

    • 都是RuntimeException类及其子类

    • 无需显示处理,也可以和编译时异常一样处理

三、Throwable类中的主要方法

public class myThrowable extends Throwable{

    @Override //返回异常发生时的简要描述
    public String getMessage() {
        return super.getMessage();
    }

    @Override //返回异常对象的本地化信息
    public String getLocalizedMessage() {
        return super.getLocalizedMessage();
    }

    @Override //返回异常发生时的详细信息
    public String toString() {
        return super.toString();
    }

    @Override //在控制台上打印 Throwable 对象封装的异常信息
    public void printStackTrace() {
        super.printStackTrace();
    }
}

 四、throws方式处理异常 

throws是定义在方法上的,且跟在方法后面,异常类名一般抛出最大的Exception。

一般调用方用的异常要大一些。

定义格式:

public void 方法名() throws 异常类名 {
    // 代码
}

 例子:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class myThrowable{
    public static void main(String[] args) throws Exception{
        System.out.println("开始");
//        method1();
        method2();
        System.out.println("结束");
    }
    //编译时异常,异常必需要手动给出,否则报红
    public static void method2() throws ParseException {
        String s = "2022-08-08";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date d = sdf.parse(s);
        System.out.println(d);
    }
    //运行时异常
    public static void method1() throws ArrayIndexOutOfBoundsException {
        int[] arr = {1, 2, 3};
        System.out.println(arr[3]);
    }
}

运行时异常: 运行时才会发生,所以在方法后面可以不写,运行时出现异常默认交给jvm处理

 编译时异常在编译时就会检查,所以一定要在方法后抛出异常处理

 四、throw异常和try-catch-finally 使用

声明格式:

一般在方法中抛出,表示手动抛出异常,一般结合try-catch-fianlly使用

throw new 异常类型();

例子:

public class myThrowable{
    public static void main(String[] args){
        System.out.println("开始");
        method1();
        System.out.println("结束");
    }

    public static void method1() {
        try {
            int i = 1/0;
            System.out.println(i);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("异常信息描述:"+e.getMessage());
        } finally {
            //
        }
    }
}

 

 关于有返回值情况:

 

 

相关文章:

  • 东莞市建设质量监督站/安卓手机游戏优化器
  • 做房产网站能赚钱吗/推广赚钱项目
  • 烟台网站设计公司/产品营销策略有哪些
  • 自己做网站 做什么好/大数据营销策略有哪些
  • ppt模板下载免费素材网站/培训体系搭建
  • 网站开发需要具备哪些技术/哪家公司建设网站好
  • Java ~ Executor ~ LinkedBlockingQueue【源码】
  • 【Redis】事务秒杀案例
  • MMCV学习——基础篇3(fileio)| 五千字:含示例代码教程
  • Redis学习笔记(五)
  • 【Linux Kernel 6.1 代码剖析】- 进程管理概论
  • 多线程 3
  • 配置请求头Content-Type
  • 公众号接口免费调用
  • numpy学习笔记
  • Windows内核--子系统(3.5)
  • java计算机毕业设计学生健康信息管理源程序+mysql+系统+lw文档+远程调试
  • 基于DNN深度学习网络的OFDM信号检测算法的matlab仿真,对比LS和MMSE两个算法