首页 > 其他分享 >章12——异常exception

章12——异常exception

时间:2024-09-13 21:04:00浏览次数:1  
标签:exception 12 System try println catch 异常 public

异常
快捷键 ctrl + alt + t
选中 try-catch
如果进行异常处理,即使出现了异常,程序可以继续执行。

异常介绍
开发过程中的语法错误和逻辑错误不是异常。
执行过程中所发生的异常事件可分为如下两大类:

异常体系图


小结:

常见的运行时异常

没有关联的类不能进行上下转型

异常处理机制
两种:try-catch 和 throws

比如如果try中有些重要的资源一定要关闭,那么我们就可以把资源的关闭放到finally代码块中。
如果没有finally也是允许的。
快捷键:ctrl + alt + t

最终传回JVM时:处理机制:
第一步:输出异常信息
第二步:中断程序

当我们对异常没有处理时(没有显式地使用 try-catch 或 throw),默认时有个throws

public class TryCatchDetail {
    public static void main(String[] args) {
        try {
            String str = "abc";
            int a = Integer.parseInt(str);
            System.out.println(a);
        } catch (NumberFormatException e) {
            System.out.println("异常信息=" + e.getMessage());
        }finally {
            System.out.println("finally");
        }

        System.out.println("going on...");
    }
}


父子顺序:拒绝垄断。


但是此时我们的善后工作在finally中可以被执行。

练习实践:保证整数输入的 try-catch

import java.util.Scanner;

public class TryCatchExercise {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = 0;
        while (true){
            try {
                num = Integer.parseInt(scanner.next());
                break;
            } catch (NumberFormatException e) {
                //返回到循环起始点。
            }
        }
    }
}

throws异常处理

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class Throws01 {
    public static void main(String[] args) {

    }
    //使用抛出异常,让调用f1方法的调用者(常常是另一个方法)处理。
    //此处用父类Exception也可以。
    //throws关键字后也可以是 异常列表,即可以抛出多个异常。
    public void f1() throws FileNotFoundException, NullPointerException{
        FileInputStream fis = new FileInputStream("d://aa.txt");
    }
}

throws细节


而如果抛出了运行异常,则不用处理,如果抛出了编译异常,则要处理,不论方法中到底有没有该异常。

自定义异常

例子:

一般情况下,我们继承运行时异常,其好处在于,我们可以使用默认的处理机制。

throw 和 throws 的区别

本章作业
没太明白

public class EcmDef {
    public static void main(String[] args) {
        //需要在程序中配置参数
        EcmDef ecmDef = new EcmDef();
        try {
            if(args.length !=2){
                throw new ArrayIndexOutOfBoundsException("参数个数不对");
            }

            int n1 = Integer.parseInt(args[0]);
            int n2 = Integer.parseInt(args[1]);

            double res = ecmDef.cal(n1,n2);

            System.out.println(res);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println(e.getMessage());
        }catch (NumberFormatException e){
            System.out.println("参数格式不对");
        }catch (ArithmeticException e){
            System.out.println("出现了除0的异常");
        }

    }
    public double cal(int n1, int n2){
        return n1/n2;
    }
}

标签:exception,12,System,try,println,catch,异常,public
From: https://www.cnblogs.com/gknives/p/18412862

相关文章

  • K12484 银行排队(bank)
    题目描述K个人来银行排队办理业务,银行有n个窗口可以同时办理,每个窗口允许有m个人排队,其余的人在银行大厅等待。当某个窗口排队人数少于m时,在大厅等待的人可进入该窗口排队。每个人都有自己要办的业务,每个业务要花费一定的时间,银行的上班时间是早上8点到下午17点,若开始办理业务......
  • 8200-1312 蒸汽轮机数字调速器控制
    特性和功能集成图形前面板HMI屏幕多语言屏幕(包括中文),便于操作员使用、诊断和控制大屏幕允许轻松导航和图标查看参数和性能操作员和工程师可在本地查看实时趋势带有当前操作点视图的图形蒸汽图,用于提取和进入可配置的标签名称,可轻松识别连接内部“涡轮机模拟器”,用于在系统......
  • Java中异常的学习
    异常目录异常程序错误类型什么是异常?异常的主要作用?在实际的程序设计中,并非所有错误都能在编译期间被侦测到。运行时错误会引起异常(exception,也称例外):程序运行过程中出现的事件,它中断正常的程序控制流程。没有异常处理代码的程序,可能会非正常结束,有时候会引起严重问题。程序错......
  • msvcr100.dll丢失导致快吧迷你页异常?深度解析快吧迷你页msvcr100.dll文件丢失原因与修
    在使用快吧迷你页等软件时,有时会遇到“msvcr100.dll丢失”的错误提示,导致软件无法正常运行。这一问题主要由msvcr100.dll文件丢失或损坏引起,该文件是MicrosoftVisualC++2010RedistributablePackage中的一个重要组件,负责提供程序运行所需的运行时库支持。以下是对该问题的......
  • C语言 12 函数
    其实函数在一开始就在使用了://这就是定义函数intmain(){...}程序的入口点就是main函数,只需要将程序代码编写到主函数中就可以运行了,不过这个函数只是由我们来定义,而不是我们来调用。当然,除了主函数之外,一直在使用的printf也是一个函数,不过这个函数是标准库中已经......
  • 金典120GB固态硬盘SM2258XT量产修复成功记录,附SM2258XT B16A开卡软件,VM29F01TEME1(2CA
    偶得一块二手的120G金典SSD,闲来无事搞一下量产,先上外观图片给大家看看:玩量产的一般都知道,找量产工具,肯定是要根据主控型号和闪存颗粒制程,来找相匹配的软件才行。因此我们拆开外壳,下图看到里面主控SM2258XT,颗粒丝印VM29F01TEME1-B16A,这块固态比较方便的地方是,单从丝印上就能看出是B1......
  • Java【异常处理】
    机制概述JVM用方法调用栈来跟踪一系列方法的调用过程,位于栈顶的是正在执行的方法,当一个方法抛出异常时,根据代码处理异常。异常常见类型 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这些异常在编译时强制要求程序员处理。运行时异常: 这些异常在编译时不强......
  • 面试官:线程池遇到未处理的异常会崩溃吗?
    首先,这个问题考察的是你对线程池execute方法和submit方法的理解,在Java线程池的使用中,我们可以通过execute方法或submit方法给线程池添加任务,但如果线程池中的程序在执行时,遇到了未处理的异常会怎么呢?接下来我们一起来看。1.execute方法execute方法用于提交一个不需要......
  • springboot JZ车行系统-计算机毕业设计源码93812
    目 录摘 要1绪论1.1研究背景与意义1.2开发现状1.3论文结构与章节安排2 系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3操作可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系统用例分析2.4......
  • 南沙C++信奥老师解一本通题: 1212:LETTERS
    ​ 题目描述】给出一个row×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。【输入】第一行,输入字母矩阵行数R和列数S,1≤R,S≤20。接着输出R行S列字母矩阵。【输出】最多能走过的不同字母......