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

Java技术复习提升 10异常

10 异常

10.1异常介绍及分类

异常捕获 选中后alt+tab+t->选中try-catch

异常就是程序执行中不正常的情况 注意语法和逻辑错误并不是异常

异常分类有两种 error和exception error是错误 虚拟机无法解决的严重问题 exception是其他因为编程错误或者外在因素导致的一般性的问题 exception又分为两大类 运行时异常 编译时异常 前者指程序运行时发生的异常 后者指编译器检查出的异常 

 

 顾名思义 非受检异常就是在编译时不需要强制处理的异常 所以也叫运行时异常 受检异常就是编译时异常

10.2 运行时异常

运行时异常是程序员应该避免的 包括

 

 

 

 

 

10.3 编译时异常

 

10.4 异常处理方式

理解:可以看到 如果有try-catch-finally 捕获到异常可以处理 但如果没有 就要将该异常throws到调用它的方法 进行处理 直到有对应的处理异常的地方 如果一直没有 就会将该异常throws到JVM进行处理 

10.5 try-catch-finally 

import java.util.Scanner;

class test{
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);


        String name=in.next();
        try {
            int num=Integer.parseInt(name);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            System.out.println("finally一定执行");
        }
    }
}

 

 多个catch语句

import java.lang.Object;
import java.util.Scanner;

class test{
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String name=in.next();
        int num=in.nextInt();

        try {
            int n=Integer.parseInt(name);
            Father father=new Father();
            father.fly();
            int i=1/num;
        }catch(NullPointerException e){
            e.printStackTrace();
        }catch (NumberFormatException e){
            e.printStackTrace();
        }catch(ArithmeticException e){
            e.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }
        finally {
            System.out.println("finally一定执行");
        }
    }
}

class Father{
    void fly(){
        System.out.println("father flying");
    }

    void swim(){
        System.out.println("father swimming");
    }
}

class Son extends Father{
    @Deprecated void fly(){
        System.out.println("son flying");
    }

    @Override void swim(){
        System.out.println("son swimming");
    }
}

class Daughter extends Father{

}

 

try-finally相当于没有捕获异常 所以如果出现异常程序会直接崩掉

题目

先执行try 数组越界异常 进入对应catch块 执行语句(return不执行) 最后进入finally块 执行语句return执行 所以返回4

总结:finally对返回值的影响:看finally中有没有返回值

总结:

10.6 throws

10.7 自定义异常

package com.hspedu.customexception_;
public class CustomException {
    public static void main(String[] args) /*throws AgeException*/ {
        int age = 180;
        //要求范围在 18 – 120 之间,否则抛出一个自定义异常
        if(!(age >= 18 && age <= 120)) {
            //这里我们可以通过构造器,设置信息
            throw new AgeException("年龄需要在 18~120 之间");
        }
        System.out.println("你的年龄范围正确.");
    }
}
//自定义一个异常

//1. 一般情况下,我们自定义异常是继承 RuntimeException
//2. 即把自定义异常做成 运行时异常,好处时,我们可以使用默认的处理机制
//3. 即比较方便
class AgeException extends RuntimeException {
    public AgeException(String message) {//构造器
        super(message);
    }
}
 

 


http://www.kler.cn/a/405761.html

相关文章:

  • Matlab科研绘图:自定义内置多款配色函数
  • 【vue】vue中.sync修饰符如何使用--详细代码对比
  • HarmonyOs DevEco Studio小技巧31--卡片的生命周期与卡片的开发
  • C# Postman或者PostApi调试前端webapi接口发送带有request/body/head信息
  • 卫生间门选择单包套还是双包套好?
  • C07.L07.STL之映射.应用2.统计数字
  • 小红书运营教程10(小红书笔记制作01)
  • 安卓手机5G网络频繁掉4G 问题解决 手机5G网络优化方案
  • 24/11/22 项目拆解 艺术风格转移
  • 数据库类型介绍
  • Python中的Apriori库详解
  • 明达IOT平台基座赋能氢能制造企业,开启数字化升级新篇章
  • .NET周刊【11月第3期 2024-11-17】
  • 智能工厂的设计软件 为了监管控一体化的全能Supervisor 的监督学习 之 序7 进化论及科学的信息技术创新:分布式账本/区块链/智能合约
  • Ensp-Wlan实操
  • 解决vue-pdf的签章不显示问题
  • unity3d——基础篇2刷(三角函数)
  • 如何使用Jest测试你的React组件
  • 金融量化交易:技术突破与模型优化
  • HTML5 SVG
  • 力扣面试题 - 24 插入
  • Node.js笔记(四)局域网聊天室2:服务端接受客户端消息
  • PostGIS分区表创建
  • 探索 Python 字典的奥秘:Future 对象为何能成为字典的键?
  • 【UE5】Slider控件样式
  • 【ubuntu24.04】安装mongodb社区版本