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:子类不能比父类抛出更多的异常

中心对数比变换(Centered Log Ratio Transformation,CLR)的原理及scikit-bio介绍 中心对数比变换(Centered Log Ratio Transformation,CLR)是一种数据预处理方法,常用于成分数据分析领域。在成分数据中,各成分之间通常存在一定的约束关系,比如它们的为固定值等,中心对数比变换可以有效地处理这种具有特殊约束的数据。官方文档scikit-bio是一个在Python3中处理生物数据的库成分统计 (skbio.stats.composition )模块中的,此函数将组合从Aitchison几何体转换到真实空间。这个clr。 阅读详情

相关推荐

【DRAM存储器五十六】LPDDR5介绍--WCK2CK LevelingRead gate training

简述LPDDR5 WCK2CK levelingread gate traning基本原理与操作步骤

highman110的博客 8644

java异常机制--运行异常运行异常

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

长江七号的博客 793

烟草病害多类别目标检测数据集.zip

数据集介绍:烟草病害多类别目标检测数据集一、基础信息数据集名称:烟草病害多类别目标检测数据集图片数量:- 训练集:2,614张- 验证集:395张- 测试集:321张总计:3,330张农业场景图片分类类别:- 黑斑病(Black Spot)- 黑胫病(Black shank)- 早疫病(Early Blight)- 晚疫病(Late Blight)- 叶霉病(Leaf Mold)- 烟草花叶病毒(TMV)- 烟草曲叶病毒(TLCD)- 白粉病(Powdery Mildew)- 蜘蛛螨害(Spider Mites)- 健康叶片(Healthy Leaf)等20种病害状态标注格式:YOLO格式标注,包含标准化边界框坐标与病害分类标签,适配目标检测模型训练。数据特性:覆盖叶片不同生长阶段、多角度拍摄的农业图像,包含室内研究样本与田间实拍场景。二、适用场景智能农业监测系统:用于开发烟草病害实检测系统,通过无人机或田间摄像头实现病害早期预警。植物病理学研究:为农业科研机构提供标准化病害图像数据,支持病害传播模式分析与防治策略研究。农业技术教育:作为农林院校数字化教学资源,帮助学生直观识别20种烟草常见病害特征。农业AI产品开发:适用于开发移动端病害识别应用,辅助农户进行田间即诊断决策。三、数据集优势行业针对性突出:专注烟草作物领域,包含从真菌性病害(如晚疫病)到虫害(叶螨)的全类别覆盖。标注专业性强:由农业专家参与标注验证,确保病害分类准确性与边界框定位可靠性。场景多样性丰富:包含实验室特写与田间复杂背景样本,增强模型在真实农业环境中的泛化能力。技术适配度高:原生YOLO格式支持主流检测框架快速训练,可扩展至病害严重度评估等衍生任务。效价值显著:包含烟草曲叶病毒(TLCD)等新兴病害类型数据,响

Java笔试题(一)单选题

1、下列哪一种叙述是正确的 A. abstract修饰符可修饰字段、方法类 B. 抽象方法的body部分必须用一对大括号{ }包住 C. 声明抽象方法,大括号可有可无 D. 声明抽象方法不可写出大括号 答案:D abstract(抽象)修饰符,可以修饰类方法 abstract修饰符在修饰类必须放在类名前。 public abstract void method(); 2、如下代码,...

互联网叫兽 13万+

java声明异常必须抛出吗_关于java:调用函数为什么需要“抛出异常”?

class throwseg1{void show() throws Exception{throw new Exception("my.own.Exception");}void show2() throws Exception // Why throws is necessary here ?{show();}void show3() throws Exception // Why thr...

weixin_29214691的博客 1368

java异常处理 Exception、error、运行异常一般异常有何异同

一、开场白 对于程序运行过程中的可能出现异常情况,java语言使用一种称为异常处理的错误捕捉机制进行处理。相信大家对 try { }catch( ){} finally{} 这种结构常熟悉,使用频率极高。既然经常使用它,而且也是面试常问知识点,我们就有必要去深入地了解一下。也谈不上深入,只是java语言的基本功。下面,开始吧! 二、异常分类 在java中,异常对象都是派生于Throwabl...

m0_37531231的博客 1万+

java抛出异常_最最最全面的Java异常面试及解答

本文同名博客老炮说Java:https://www.laopaojava.com/,每天更新Spring/SpringMvc/SpringBoot/实战项目等文章资料常架构与异常关键字Java异常简介Java异常Java提供的一种识别及响应错误的一致性机制。 Java异常机制可以使程序中异常处理代码正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回...

weixin_39983384的博客 3446

Java运行异常运行异常

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

一勺菠萝丶的博客 7650

Java 运行异常运行异常

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

单枪匹码 4305

java运行异常有哪些_Java运行异常运行异常

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

weixin_39623620的博客 4417

Java检查异常检查异常,运行异常运行异常的区别

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

灰太狼 1万+

JAVA理解运行异常运行异常

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

Cx的博客 571

运行异常 java_Java运行异常运行异常

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

weixin_33125137的博客 240

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

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

weixin_35811254的博客 1223

Java基础】运行异常运行异常的区别

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

小树じ的博客 2545

java 运行异常运行异常的区别

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

Fling_Pig的博客 2512

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

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

haohao1223的博客 925
上一篇: java异常处理之抛出异常
下一篇: 详解Android中调试桥--adb
Code_legend
博客等级 码龄10年 33粉丝 30原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值