java异常之运行时异常和非运行时异常

java面试题12运行时异常和非运行时异常的区别? Java异常分为运行时异常和非运行时异常(检查型异常)。关键区别在于编译器是否强制处理:运行时异常(如NullPointerException)表示程序逻辑错误,不强制处理;非运行时异常(如IOException)反映外部问题,必须捕获或声明抛出。运行时异常应通过代码优化避免,非运行时异常需设计处理逻辑。最佳实践是对检查型异常制定恢复策略,对运行时异常侧重预防性编程,在关键位置统一处理。理解这种差异有助于编写更健壮的Java程序。 阅读详情

RuntimeException

RunntimeException的子类:
ClassCastException
多态中,可以使用Instanceof 判断,进行规避
ArithmeticException
进行if判断,如果除数为0,进行return
NullPointerException
进行if判断,是否为null
ArrayIndexOutOfBoundsException
使用数组length属性,避免越界
这些异常时可以通过程序员的良好编程习惯进行避免的
1:遇到运行时异常无需进行处理,直接找到出现问题的代码,进行规避。
2:就像人上火一样牙疼一样,找到原因,自行解决即可
3:该种异常编译器不会检查程序员是否处理该异常
4:如果是运行时异常,那么没有必要在函数上进行声明。
6:案例
1:除法运算功能(div(int x,int y))
2:if判断如果除数为0,throw new ArithmeticException();
3:函数声明throws ArithmeticException
4:main方法调用div,不进行处理
5:编译通过,运行正常
6:如果除数为0,报异常,程序停止。
7:如果是运行时异常,那么没有必要在函数上进行声明。
1:Object类中的wait()方法,内部throw了2个异常 IllegalMonitorStateException InterruptedException
1:只声明了一个(throws) IllegalMonitorStateException是运行是异常没有声明。

class Demo12 {

    public static void main(String[] args){
        div(2, 1);
    }

    public static void div(int x, int y) {
        if (y == 0) {
            throw new ArithmeticException();  
        }
        System.out.println(x / y);
    }
}

非运行时异常(受检异常)

如果出现了非运行时异常必须进行处理throw或者try{}catch(){}处理,否则编译器报错。
1;IOException 使用要导入包import java.io.IOException;
2:ClassNotFoundException
2;例如人食物中毒,必须进行处理,要去医院进行处理。
3:案例
1:定义一测试方法抛出并声明ClassNotFoundException(test())
2:main方法调用test
3:编译报错
1:未报告的异常 java.lang.ClassNotFoundException;必须对其进行捕捉或声明以便抛出

public void isFile(String path){
        try
        {
            /*
            根据文件的路径生成一个文件对象,如果根据该路径找不到相应的文件,
            则没法生成文件对象。
            */
            File file = new File(path);
            //读取文件的输入流
            FileInputStream input = new FileInputStream(file);
            //读取文件
            input.read();
        }
        catch (NullPointerException e)
        {
            System.out.println("读取默认的文件路径..");
        }

    }

4:Sun 的API文档中的函数上声明异常,那么该异常是非运行是异常,
调用者必须处理。
5:自定义异常一般情况下声明为非运行时异常
2:函数的重写和异常
1:运行时异常
1:案例定义Father类,定义功能抛出运行是异常,例如(test() throw
ClassCastException)
2:定义Son类,继承Father类,定义test方法,没有声明异常
3:使用多态创建子类对象,调用test方法
4:执行子类方法
1:函数发生了重写,因为是运行时异常,在父类的test方法中,可以声明throws 也可以不声明throws

class Father {
    void test() throws ClassCastException { // 运行时异常
        System.out.println("父类");
        throw new ClassCastException();
    }
}

class Son extends Father {
    void test() {
        System.out.println("子类");
    }
}
class Demo14 {

    public static void main(String[] args) {
        Father f = new Son();
        f.test();
    }
}

2:非运行时异常
1:定义父类的test2方法,抛出非运行时异常,例如抛出ClassNotFoundException
1:此时父类test2方法必须声明异常,因为是非运行时异常
2:Son类定义test2 方法,抛出和父类一样的异常,声明异常
3:使用多态创建子类对象,调用test方法,调用test2方法,
1:声明非运行时异常的方法,在调用时需要处理,所以在main方法调用时throws
2:实现了重写,执行子类的test2方法
3:总结子类重写父类方法可以抛出和父类一样的异常,或
者不抛出异常。

2:非运行时异常
1:定义父类的test2方法,抛出非运行时异常,例如抛出ClassNotFoundException
                1:此时父类test2方法必须声明异常,因为是非运行时异常
                2:Son类定义test2 方法,抛出和父类一样的异常,声明异常
                3:使用多态创建子类对象,调用test方法,调用test2方法,
1:声明非运行时异常的方法,在调用时需要处理,所以在main方法调用时throws 
                    2:实现了重写,执行子类的test2方法
            3:总结子类重写父类方法可以抛出和父类一样的异常,或
者不抛出异常。

4:子类抛出并声明比父类大的异常例如子类test2方法抛出Exception
1:编译失败,无法覆盖
2:子类不能抛出父类异常的父类。
3:总结子类不能抛出比父类的异常更大的异常。

//2:子类覆盖父类方法不能比父类抛出更大异常
class Father {
    void test() throws Exception {
        // 非运行时异常
        System.out.println("父类");
        throw new Exception();
    }
}

class Son extends Father {
    void test() throws ClassNotFoundException { // 非运行时异常
        System.out.println("子类");
        throw new ClassNotFoundException();
    }
}
class Demo14 {

    public static void main(String[] args) throws Exception {
        Father f = new Son();
        f.test();

    }
}

总结

            1:子类覆盖父类方法是,父类方法抛出异常,子类的覆盖方法可以不抛

出异常,或者抛出父类方法的异常,或者该父类方法异常的子类。
2:父类方法抛出了多个异常,子类覆盖方法时,只能抛出父类异常的子
集
3:父类没有抛出异常子类不可抛出异常
1:子类发生非运行时异常,需要进行try{}catch的(){}处理,不能
抛出。
4:子类不能比父类抛出更多的异常

芯片测试:WAT、CP、FT 最近部门来了一个日本回来的同事,虽然他尽量用非常Poor的中文给我解释一些东西,其中还夹杂着一些英文让我很受挫,于是最近来学一下WAT中的常用的单词含义。直接去查缩写、查单词很难去记住,要把具体的东西放在具体的场景,引发知识的连接才会在脑子里留下一定的映像。感兴趣的一起来学习一下这篇不错的文章吧。注释是我查询记录,如有不妥,欢迎指出修正。 阅读详情

相关推荐

Icarus Verilog和GTKwave使用简析

本简要介绍Icarus Verilog和GTKwave的使用,使用iverilog(Icarus Verilog)编译仿真verilog而使用GTKWave查看仿真数据波形下载安装 基本使用 iverilog使用 GTKWave使用 iverilog常用选项 使用库 注意

husipeng86的专栏 1万+

Java---异常概述

Java异常类图文详解,全网最强java解释异常类

qq_63976098的博客 838

WebDriverAgent 菜鸟解析篇

WebDriverAgent 是一个用于模拟移动设备浏览器的 Python 库,可以用来在 PC 上模拟移动设备的浏览器操作,从而进行自动化测试。下面是一个菜鸟对 WebDriverAgent 源码的解析篇,希望能对初学者有所帮助。

DJ355的博客 1223

Java 中的异常类型、异常处理机制、最佳实践

Java 异常是一种在程序运行时可能出现的错误或异常状况。Java 提供了内置的异常类和处理机制,用于在程序出现异常时进行恰当的处理和响应。在 Java 中,异常类型主要分为两类:检查型异常和非检查型异常。异常处理机制包括 try-catch-finally 和 throws 子句。通过遵循最佳实践,例如尽早捕获和处理异常、分类处理异常以及避免捕获所有异常等,我们可以更好地管理代码中的异常并确保程序的可靠性和稳定性。

网络技术联盟站 1561

9 海康视觉平台VisionMaster 上手系列:典型案例之螺丝机案例

海康视觉平台VisionMaster 上手系列:典型案例之螺丝机案例 快速入门 工业机器视觉 机器视觉

HuangGong2022的博客 7180

【一文搞懂几种常用推荐算法】

协同过滤:适合用户-物品交互数据丰富的场景。矩阵分解:能处理稀疏数据,适合显式评分预测。基于内容:依赖物品特征,解决冷启动问题。NMF:适用于非负数据(如点击率、购买记录)。根据实际需求选择算法,或结合多种方法构建混合推荐系统。

专注技术的博主 2639

Java 中已检查和未检查异常

如果可以合理地期望客户端从异常中恢复,请将其设置为经过检查的异常。如果客户端无法执行任何操作来从异常中恢复,请将其设置为未选中的异常。在Java中使用异常是一种很好的做法,这样我们就可以把错误处理代码与常规代码分开。在本文中,我们讨论了已检查和未检查异常之间的区别。通常,已检查的异常表示程序无法控制的错误。如果程序引发未经检查的异常,则会反映程序逻辑中的某些错误。类是已检查异常的超类,因此我们可以通过扩展。是所有未选中异常的超类,因此我们可以通过扩展。4. 何时使用已检查的异常和未检查的异常。

allway2的博客 1378

windows版kafka异常java.nio.file.FileSystemException另一个程序正在使用此文件,进程无法访问

环境 现象 原因 解决方法 参考

山水牧羊 3847

Java异常及其处理(超全讲解)

如果finally块在catch块之前,当try块中的代码抛出异常时,程序就会直接跳转到finally块中执行,而不是执行catch块中的代码。,可以打印出异常的完整堆栈信息,包括异常的类型、消息、异常出现的位置以及异常发生时调用栈的信息。这个方法会在控制台输出异常的完整信息,便于我们查看异常的类型和异常发生时的调用栈,从而更好地定位和解决问题。而非运行时异常则必须在代码中进行显式的处理,否则会导致程序的终止。try块中包含可能会出现异常的代码,catch块中处理异常,finally块中释放资源。

m0_71469414的博客 1613

【图神经网络】从0到1使用PyG手把手创建异构图

异构图的准确定义如下:异构图(Heterogeneous Graphs):一个异构图GGG有一组节点V=v1,v2,...,vnV=v_1,v_2,...,v_nV=v1​,v2​,...,vn​和一组边E=e1,e2,...,emE=e_1,e_2,...,e_mE=e1​,e2​,...,em​组成,其中每个节点和每条边都对应着一种类型,用TvT_vTv​表示节点类型的集合,TeT_eTe​表示边类型的集合,一个异构图有两个映射函数,分别将每个节点映射到其对应的类型ϕv:V→Tv\phi_v:V\rig

小哲的博客 7833

kubernetes rook 安装 cephfs

ceph root kubernete osd uuid partuuid

天津托的博客 1543

Java 运行时异常和非运行时异常

异常类型分为两类:运行时异常和非运行时异常。 一、运行时异常: 运行时异常(RuntimeException),一般不需要程序员进行捕获。 例如:NullPointException,IndexOutOfBoundsException。如果不对该类异常进行catch处理,则在运行时异常发生时会导致当前线程终止或主程序直接终止。 二、非运行时异常: 也就是RuntimeException之外的所有异常。对于该类异常,Java编译器强制要求程序员使用try-catch进行捕获,否则编译失败。 例如:如IOExc

单枪匹码 4319

ctle电路求帮忙分析低中高频调节原理,搭好了电路该怎样调节参数?

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 1129

Java运行时异常和非运行时异常

1. Java异常机制 Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。Java中的异常分为两大类:错误Error和异常Exception,Java异常体系结构如下图所示: 2. Throwable Throwable类是所有异常或错误的超类,它有两个子类:Error和Exception,分别表示错误和异常。其中异常Exception分为运行...

一勺菠萝丶的博客 7651

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java运行时异常有哪些_Java运行时异常和非运行时异常

1.Java异常机制Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。Java中的异常分为两大类:错误Error和异常Exception,Java异常体系结构如下图所示:图片来源:http://blog.youkuaiyun.com/wuwenxiang91322/article/details/103463372.ThrowableThrowable类是所...

weixin_39623620的博客 4426

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java检查异常和非检查异常,运行时异常和非运行时异常的区别

通常,Java的异常(包括Exception和Error)分为检查异常(checked exceptions)和非检查的异常(unchecked exceptions)。其中根据Exception异常进行划分,可分为运行时异常和非运行时异常。What:什么是检查异常(checked exception)?就是编译器要求你必须处置的异常。不知道你编程的时候有没有遇到过,你写的某段代码,编译器要求你必...

灰太狼 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JAVA理解运行时异常和非运行时异常

JAVA理解运行时异常和非运行时异常 一、异常的概念 Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。 Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 Ou

Cx的博客 574

运行时异常 java_Java运行时异常和非运行时异常

1.Java异常机制Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。Java中的异常分为两大类:错误Error和异常Exception,Java异常体系结构如下图所示: 图片来源:http://blog.youkuaiyun.com/wuwenxiang91322/article/details/103463372.ThrowableThrowable类是...

weixin_33125137的博客 242

【Java基础】运行时异常和非运行时异常的区别

非运行异常: 非运行时异常也叫作编译时异常,如果不对这种异常进行捕获则无法编译,Java编译器要求程序员必须对这种异常catch,Java认为这种异常都是可以被修复的异常,所以Java程序要求显式处理这种异常。 常见的非运行异常:io异常和sql异常。 IOException、FileNotFoundExcetion 和SQLException 运行时异常: 运行是一场是不用进行捕获的,当这种异常发生时,JVM会进行处理。值得一提的是这种异常是十分普遍的异常,如果对其捕获会影响代码的可读..

小树じ的博客 2549

java运行时异常和非运行时异常_java关于RuntimeException异常和非运行时异常各有哪些?...

一、简介Java异常可以分为Error和Exception两大类型,Error类型的异常无法使用程序处理,通常为jvm虚拟机本身问题,如系统崩溃、虚拟机错误、动态链接失败等,这些异常无法被捕获,一般的所谓的异常处理是指Excepiton类型异常处理。Exception可以分为运行时异常RuntimeException和非运行时异常(如IOException等),异常层次结构图,如下图1-1所示图1...

weixin_35811254的博客 1230

java 运行时异常和非运行时异常的区别

运行时异常和非运行时异常 (1)运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。 当出现RuntimeException的时候,我们可以不处理。...

Fling_Pig的博客 2518

Java的已检查异常和非检查异常,运行时异常和非运行时异常的区别

通常,Java的异常(包括Exception和Error)分为 已检查异常(checked exceptions)和非检查的异常(unchecked exceptions)。 其中根据Exception异常进行划分,可分为运行时异常和非运行时异常。 什么是检查异常(checked exception)? 就是编译器要求你必须处置的异常。不知道你编程的时候有没有遇到过,你写的某段代码,编译器要求你必须要对这段代码try...catch,或者throws exception,如果你遇见过,没错,这就是检

haohao1223的博客 926

Java基础——运行时异常和非运行时异常

在Java中,万物皆对象,异常也不例外。 Exception(异常)是Java的一个类,它和它的兄弟类Error一起继承自它的父类——Throwable(可抛出的)。

千里之行,始于足下 4193
上一篇: java异常处理之抛出异常
下一篇: 详解Android中调试桥--adb
Code_legend
博客等级 码龄10年 33粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值