当前位置: 首页 > 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();}
}
http://www.xdnf.cn/news/283717.html

相关文章:

  • Java高并发处理核心技术详解:从理论到实战
  • 「一针见血能力」的终极训练手册
  • python全自动爬取m3u8网页视频(各类网站都通用)
  • 百度「心响」:左手“多智能体”右手“保姆级服务”,C端用户能看懂这技术告白吗?
  • 多路RTSP转RTMP推送解决方案—轻量高并发跨平台的实时流媒体中转引擎
  • indexedDB
  • 2023年第十四届蓝桥杯省赛B组Java题解【简洁易懂】
  • 再识动静态库
  • spring cloud 与 cloud alibaba 版本对照表
  • Fish-Speech TTS本地部署与推理接口文档
  • LlamaIndex统一管理存储组件的容器--StorageContext
  • 软件架构方之旅(5):SAAM 在软件技术架构评估中的应用与发展研究
  • 2024年第十五届蓝桥杯省赛B组Python【 简洁易懂题解】
  • 二叉搜索树实现删除功能 Java
  • 【RocketMQ Broker 相关源码】- broker 启动源码(2)
  • JavaScript学习教程,从入门到精通, jQuery浏览器事件和元素位置操作语法知识点及案例代码(35)
  • 【Java学习笔记】this关键字
  • QT聊天项目DAY07
  • 单片机自动排列上料控制程序
  • 链表的面试题1
  • 只用Prettier进行格式化项目
  • 第九周作业
  • 【锂电池剩余寿命预测】RF随机森林锂电池剩余寿命预测(Pytorch完整源码和数据)
  • 碰撞检测学习笔记
  • Linux基础指令【补充】
  • 尼卡音乐 1.1.1 | 免费畅听全网音乐,支持无损下载,无广告无需注册登录
  • ROS2学习笔记|C++ 实现 ROS 2 订阅与发布功能的完整流程
  • 基于python生成taskc语言文件--时间片轮询
  • 计算机图形学中的深度学习
  • (undone) MIT6.S081 2023 学习笔记 (Day10: LAB9 fs file system)