Java---异常及处理

news/2024/9/28 23:07:28 标签: java, 开发语言

一.异常

1.概念

程序的非正常执行。高级语言都有异常处理机制(C++,Java)

2.一般处理异常的方法

java">Scanner sc = new Scanner(System.in);

System.out.println("请输入一个数字:");

String s = sc.nextLine();

if (s.matches("[0-9]+")) {
    int x = Integer.parseInt(s);
    System.out.println("输入的数字是:" + x);
} else {
    System.out.println("程序异常");
}

3.异常方式

java">Scanner sc = new Scanner(System.in);

System.out.println("请输入一个数字:");

String s = sc.nextLine();

if (s.matches("[0-9]+")) {
    int x = Integer.parseInt(s);
    System.out.println("输入的数字是:" + x);
} else {
    System.out.println("程序异常");
}

4.异常机制

4.1 try

探测代码块是否有异常

java">try{
    语句块...
}

4.2 catch

异常捕获

java">cacth(异常对象 e){

}

4.3 finally

有无异常一定执行。异常机制中

在‌Java中,finally块通常用于释放资源、执行清理操作或记录错误。finally块总是会在try或‌catch块之后执行,无论是否出现异常。如果try块中没有出现异常,finally块将在try块之后立即执行;如果try块中出现异常,finally块将紧随catch块执行。

4.4 throws

方法上,声明方法内有异常,异常类型

4.5 throw

抛出异常对象

throw new 异常();

java">public static void f() throws Exception{
   int a = 1;
   int b = 0;
   
   if(b==0) throw new Exception("除0异常");
}

5.异常体系

6.自定义异常

java">package com.ffyc.exception;

public class MyException01 extends Exception{
    public MyException01(String msg){
        super(msg);
    }
}

class MyException02 extends RuntimeException{
    public MyException02(String msg){
        super(msg);
    }
}

class testMyException01{
    public static void test01() throws MyException01{
        throw new MyException01("自定义异常继承Exception");
    }
    public static void test02(){
        throw new MyException02("自定义异常继承RuntimeException");
    }

    public static void main(String[] args) {
        test02();
        try {
            test01();
        } catch (MyException01 e) {
            throw new RuntimeException(e);
        }
    }
}

7.图书系统

7.1借书

业务流程,电脑查编号,bookshell找书

java">package com.ffyc.service;

import com.ffyc.entity.Book;

//接口
public interface IBookService {
    Book borrowBook(String title);
}
java">package com.ffyc.exception;

//实现
public class BookException extends RuntimeException{
    public BookException(String msg){
        super(msg);
    }
}
java">package com.ffyc.entity;

import java.util.Date;

public class Book {
    private String title;
    private String author;
    private String content;
    private String status;
    private Date borrowDate;
    private double price;

    public Book(){

    }
    public Book(String title, String author, String content, String status, Date borrowDate, double price) {
        this.title = title;
        this.author = author;
        this.content = content;
        this.status = status;
        this.borrowDate = borrowDate;
        this.price = price;
    }
    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Date getBorrowDate() {
        return borrowDate;
    }

    public void setBorrowDate(Date borrowDate) {
        this.borrowDate = borrowDate;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Book{" +
                "title='" + title + '\'' +
                ", author='" + author + '\'' +
                ", content='" + content + '\'' +
                ", status='" + status + '\'' +
                ", borrowDate=" + borrowDate +
                ", price=" + price +
                '}';
    }
}
java">package com.ffyc.service.impl;

import com.ffyc.entity.Book;
import com.ffyc.exception.BookException;
import com.ffyc.service.IBookService;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class BookServiceImpl implements IBookService {
    private List<Book> books = new ArrayList<Book>();

    {
        books.add(new Book("西游记","武建军","我的大学生活","在库",null,33.44));
    }

    public Book borrowBook(String title)  {
        Iterator<Book> it = books.iterator();
        while (it.hasNext()){
            Book book = it.next();
            if (book.getTitle().equals(title) && book.getStatus().equals("在库")){
                return book;
            }
        }
        throw new BookException("图书已借出或丢失");
    }

    public static void main(String[] args) {
        IBookService ibs = new BookServiceImpl();

        Book book = ibs.borrowBook("西游记");
        System.out.println(book);
    }
}


http://www.niftyadmin.cn/n/5682029.html

相关文章

传知代码-基于图神经网络的知识追踪方法(论文复现)

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 1.论文概述 论文链接提出了一种基于图神经网络的知识追踪方法&#xff0c;称为基于图的知识追踪&#xff08;GKT&#xff09;。将知识结构构建为图&#xff0c;其中节点对应于概念&#xff0c;边对应于它们之间的…

用通义灵码如何快速合理解决遗留代码问题?

本文首先介绍了遗留代码的概念&#xff0c;并对遗留代码进行了分类。针对不同类型的遗留代码&#xff0c;提供了相应的处理策略。此外&#xff0c;本文重点介绍了通义灵码在维护遗留代码过程中能提供哪些支持。 什么是遗留代码 与过时技术相关的代码&#xff1a; 与不再受支持的…

【linux进程】深度理解进程--什么是进程什么是pcb进程创建

目录 前言一&#xff0c;对PCB的理解二&#xff0c;CPU对进程列表的处理三&#xff0c;进程标识符:pid1. 查看系统进程1: ps axj2. 查看系统进程2: /proc 四&#xff0c;系统调用函数:getpid五&#xff0c;父进程和子进程的概念六&#xff0c;创建子进程--fork函数的使用1. 创建…

胤娲科技:AI界的超级充电宝——忆阻器如何让LLM告别电量焦虑

当AI遇上“记忆橡皮擦”&#xff0c;电量不再是问题&#xff01; 嘿&#xff0c;朋友们&#xff0c;你们是否曾经因为手机电量不足而焦虑得像个无头苍蝇&#xff1f;想象一下&#xff0c;如果这种“电量焦虑”也蔓延到了AI界&#xff0c; 特别是那些聪明绝顶但“耗电如喝水”的…

map的键排序方法

1.对map中的key进行正序排序 Map<Integer, String> map Maps.newHashMap();// 原始map LinkedHashMap<Integer, String> sortedMap map.entrySet().stream().sorted(Map.Entry.comparingByKey()) // .collect(Collectors.toMap(Map.Entry::getKey…

【Python】Pythonic Data Structures and Algorithms:深入浅出数据结构与算法的 Python 实现

Pythonic Data Structures and Algorithms 是一个开源项目&#xff0c;汇集了各种经典数据结构和算法的 Python 实现。该项目旨在为开发者提供丰富的学习资源&#xff0c;帮助他们通过 Python 代码理解和掌握数据结构与算法的核心原理和应用。项目中的算法涵盖了排序、搜索、图…

Linux基础知识 + 常用命令

Linux基础 与Windows不同 1.Linux严格区分大小写 2.Linux中所有内容都已文件形式保存&#xff0c;包括硬件 3.Linux不靠拓展名区分文件类型 4.Windows下的程序不能直接在Linux中安装和运行 Linux管理 常用命令 ls 【选项】【文件或目录】 -a 全部 -l 详细 -h 人性化…

Java_集合_单列集合Collection

第一章.Collection接口 Collection<E> 集合名 new 实现类对象<E>() 常用方法: boolean add(E e) : 将给定的元素添加到当前集合中(我们一般调add时,不用boolean接收,因为add一定会成功) boolean addAll(Collection<? extends E> c) :将另一个集合元素添…