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

Javase 基础加强 —— 01 异常

本系列为笔者学习Javase的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员Java+AI智能辅助编程全套视频教程,java零基础入门到大牛一套通关》,章节分布参考视频教程,为同样学习Javase系列课程的同学们提供参考。

01 课程安排

  • day01 - 异常、泛型、集合框架

  • day02 - 集合框架、Stream流

  • day03 - File、字符集、IO流框架

  • day04 - 多线程

  • day05 - 网络编程

  • day06 - Java高级技术

02 授课方式

Javase基础加强是一个空工程Empty Project,每天的内容是一个独立的模块Module

03 什么是异常?

异常代表程序出现的问题。

在这里插入图片描述

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class ExceptionDemo1 {public static void main(String[] args) throws ParseException, FileNotFoundException {show();show2();}//认识编译异常public static void show2() throws ParseException, FileNotFoundException { //抛弃parse,file异常System.out.println("===show2()方法开始运行===");String str = "2025-04-09 16:28:30";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = sdf.parse(str); //一个提醒,担心你的格式写错了System.out.println(date);InputStream is = new FileInputStream("D:/dog.png"); //一个提醒,担心你没有D盘或者没有小狗图片System.out.println("===show2()方法结束运行===");}//认识运行异常 exceptionpublic static void show(){System.out.println("===show()方法开始运行===");//1.数组索引越界异常int[] arr = {1, 2, 3};System.out.println(arr[3]);//2.数字操作异常System.out.println(10 / 0);//3.空指针异常String str = null;System.out.println(str);System.out.println(str.length());System.out.println("===show()方法结束运行===");}
}

04 异常的基本处理

在这里插入图片描述

05 异常的作用

  • 异常是用来定位程序bug相关的关键信息
  • 异常可以作为方法内部的一种特殊返回值,以便通知上层调用者方法的执行问题
public class ExceptionDemo2 {public static void main(String[] args) {try{System.out.println(div(10, 0));System.out.println("底层代码执行成功");}catch (Exception e){e.printStackTrace(); //打印异常System.out.println("底层代码执行失败");}}public static int div(int a, int b) throws Exception { //抛if(b == 0){System.out.println("请重新输入正确被除数!");throw new Exception("请重新输入正确被除数!"); //返回Exception类型}int result = a / b;return result;}
}

06 自定义异常

由于Java无法为这个世界上全部的问题都提供异常类来代表,如果企业自己的某种问题,想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类了。

在这里插入图片描述

① 自定义编译时异常

HeimaUnlegalException.java

package exception;
/*** 1.继承Exception* 2.重写Exception构造器*/public class HeimaUnlegalException extends Exception{//无参构造器public HeimaUnlegalException(){}//有参构造器public HeimaUnlegalException(String str){super(str);}
}

ExceptionDemo3.java

package exception;public class ExceptionDemo3 {public static void main(String[] args) {try{saveAge(300);}catch(HeimaUnlegalException e){ //3.捕获e.printStackTrace(); //4.打印}}public static void saveAge(int age) throws HeimaUnlegalException { //2.抛弃if(age < 1 || age > 200){//1.返回HeimaUnlegalException类型对象throw new HeimaUnlegalException("年龄不合法");}else{System.out.println("年龄合法");System.out.println("保存年龄" + age);}}
}

② 自定义运行时异常

将继承对象从Exception改为RuntimeException即可。

07 异常的处理方案

方案一:底层异常层层往上抛出,最外层捕获异常,记录下异常信息,并响应适合用户观看的信息进行提示。

方案二:最外层捕获异常后,尝试重新修复。

package exception;import java.util.Scanner;public class ExceptionDemo4 {public static void main(String[] args) {while(true){try {double price = savePrice();System.out.println("保存定价" + price);break; //直到用户输入正确的定价,程序退出} catch (Exception e) {System.out.println("请输入正确的价格!!!");}}}public static double savePrice(){System.out.println("请输入商品定价:");Scanner sc = new Scanner(System.in);return sc.nextDouble();}
}

相关文章:

  • Vue 路由(Vue Router)详解:轻松实现单页应用导航
  • llfc项目分布式服务笔记
  • VSCode搭建STM32开发调试环境
  • PostgreSQL 查看索引碎片的方法
  • Git 入门指南:下载与初步认识
  • 多模态大语言模型arxiv论文略读(五十九)
  • React-router v7 第七章(导航)
  • 【leetcode100】最长递增子序列
  • 大数据实时数仓的数据质量监控解决方案
  • TS 类型别名
  • [MATLAB]通过50个MATLAB程序理解信号与系统的核心概念
  • K8S的使用(部署pod\service)+安装kubesphere图形化界面使用和操作
  • Go Web 后台管理系统项目详解
  • AI入门:Prompt提示词写法
  • Qt6 学习指南:前言+安装基本依赖
  • Prompt compress 技术探究-LLMLingua2
  • RabbitMQ-基础
  • 2025.4.28-20025.5.4学习周报
  • 网络开发基础(游戏)之 心跳机制
  • iview 老版本合并单元格
  • “五一”假期第四天,全社会跨区域人员流动量预计超2.7亿人次
  • 抗战回望17︱《青年界》:给一般青年供给一些精神的食料
  • 空间站第八批科学实验样品返抵地球并交付科学家
  • 空调+零食助顶级赛马备战,上海环球马术冠军赛即将焕新登场
  • “80后”杨占旭已任辽宁阜新市副市长,曾任辽宁石油化工大学副校长
  • 三大猪企一季度同比均实现扭亏为盈,营收同比均实现增长