首页 > 其他分享 >开发中编译时期异常Exception和运行时期异常RuntimeException如何选择

开发中编译时期异常Exception和运行时期异常RuntimeException如何选择

时间:2024-03-12 12:44:06浏览次数:19  
标签:Exception java RuntimeException age AgeIllegalException import 异常 public

从实际开发角度来看不管使用哪种都是可以的,业界标准如下

  1. 如果问题特别严重,开发人员很容易犯,强烈的提醒开发人员注意,那就抛编译时期异常,写完编译不通过就会报错,而后进一步对其处理

  2. 如果问题不严重,开发人员一般不会出现这种问题,那就抛出运行时期异常,编译通过,后续报错再处理

自定义运行时期异常,运行时异常,不需要显式地在方法上使用throws声明,调用者可以选择捕获或不捕获。

点击查看代码
import java.io.*;
import java.lang.*;
import java.math.*;
import java.net.*;
import java.nio.*;
import java.security.*;
import java.text.*;
import java.time.*;
import java.util.*;

public class App {

    public static Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
        System.out.print("Please Enter age:");
        int age = scanner.nextInt();

        setAge(age);//并未捕获

        try {
            int age = scanner.nextInt();

            setAge(age);// 捕获
            
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    private static void setAge(int age) {
        if(0<age&&age<150)
            System.out.println("age is legal");
        else
            throw new AgeIllegalRuntimeException("age is illegal   "+age);

    }
}

//自定义运行时期异常 该异常类是一个运行时异常,不需要显式地在方法上使用throws声明,调用者可以选择捕获或不捕获。
class AgeIllegalRuntimeException extends RuntimeException{

    public AgeIllegalRuntimeException() {
    }

    public AgeIllegalRuntimeException(String message) {
        super(message);
    }
}

Please Enter age:250
Exception in thread "main" AgeIllegalRuntimeException: age is illegal   250
        at App.setAge(App.java:24)
        at App.main(App.java:18)

自定义编译时期异常,该异常类是一个受检查异常,所以方法上需要使用throws AgeIllegalException声明,调用者必须显式地处理这个异常,例如使用try-catch块。

点击查看代码
import java.io.*;
import java.lang.*;
import java.math.*;
import java.net.*;
import java.nio.*;
import java.security.*;
import java.text.*;
import java.time.*;
import java.util.*;

public class App {

    public static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        
        System.out.print("Please Enter age:");

        try {
            
            int age = scanner.nextInt();
            setAge(age);// 捕获
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }

    private static void setAge(int age) throws AgeIllegalException{
        if (0 < age && age < 150)
            System.out.println("age is legal");
        else
            throw new AgeIllegalException("age is illegal   " + age);
    }
}

// 自定义编译时期异常 该异常类是一个受检查异常,所以方法上需要使用throws AgeIllegalException声明,调用者必须显式地处理这个异常,例如使用try-catch块。
class AgeIllegalException extends Exception {

    public AgeIllegalException() {
    }

    public AgeIllegalException(String message) {
        super(message);
    }

}

/*
 * Please Enter age:250
 * AgeIllegalException: age is illegal 250
 * at App.setAge(App.java:33)
 * at App.main(App.java:22)
 */

在Java中,源代码首先经过编译器(javac)编译成字节码文件(以.class为扩展名),然后通过Java虚拟机(JVM)来运行这些字节码文件。

具体流程如下:

编写源代码: 开发者使用文本编辑器或集成开发环境(IDE)编写Java源代码,保存文件以.java为扩展名。

编译源代码: 使用Java编译器(javac)将源代码编译成字节码文件。这个过程会生成与每个类对应的.class文件,其中包含了字节码。

JVM负责将字节码文件解释成机器码或通过即时编译(Just-In-Time Compilation)转换成本地机器码,然后执行程序。

标签:Exception,java,RuntimeException,age,AgeIllegalException,import,异常,public
From: https://www.cnblogs.com/itcq1024/p/18068058

相关文章

  • [springboot] SpringBoot启动成功后因actuator健康检测报:Redis health check failed/
    0序背景:项目中引入了spring-boot-starter-actuator健康检测模块<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>1问题描述确认微服务刚启动后,因K8S集群周期性定时(默认每隔1......
  • 并发修改异常
    什么是并发修改异常:当我们在遍历实现了collection接口与iterator接口的集合时(List、Set、Map),我们可以通过遍历索引也可以通过迭代器进行遍历。在我们使用迭代器进行遍历集合的时候,会获取到当前集合的迭代对象。在里面有封装了迭代器的remove方法与集合自带的remove方法,如果我们......
  • zabbix出现ValueCacheSize异常
    1、https://www.cnblogs.com/zhangcheng94/p/13677204.htmlzabbix异常之valuecacheisfullyused:pleaseincreaseValueCacheSizeconfigurationparameter 阅读目录一、zabbix出现ValueCacheSize异常二、解决办法:增加ValueCacheSize大小1、编辑zabbix_server.co......
  • java.net.UnknownHostException: api.weixin.qq.com解决办法
    java.net.UnknownHostException: api.weixin.qq.comat java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:175)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)at java.net.Socket.connect(Socket.java:546)at sun.security.ssl.SSLSo......
  • catch mybatis 异常
    Spring的DAO异常层次异常                                何时抛出CleanupFailureDataAccessException 一项操作成功地执行,但在释放数据库资源时发生异常(例如,关闭一个Connection)DataAccessRe......
  • SQLIntegrityConstraintViolationException: Cannot add or update a child row: a fo
    异常原因:两张表存在外键关联并且有级联操作,级联更新或级联删除等1.(此处为)设置的外键与另一个表中的唯一索引列(一般是主键)中的值不匹配2.添加的外键列与另一个表的唯一索引列(一般是主键)的数据类型不同......
  • Maxwell启动问题java.lang.RuntimeException: error: unhandled character set ‘utf8
    使用Maxwell碰到问题,查看日志后显示大概是这个问题java.lang.RuntimeException:error:unhandledcharacterset‘utf8mb3‘。网上查找,看了经验贴https://blog.csdn.net/weixin_44943845/article/details/126860077,知道原因是这个:但是不太想重新下载源码进行打包,于是决定按......
  • java.util.ConcurrentModificationException
    用for循环遍历删除不会报错但是结果未达到预期解决方法......
  • 痞子衡嵌入式:不清i.MXRTxxx里FLEXSPI_MCR0寄存器保留位会造成IP CMD读写异常
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是不清i.MXRTxxx里FLEXSPI_MCR0寄存器保留位会造成IPCMD读写异常。痞子衡曾经写过一篇文章《改动i.MXRT1xxx里IOMUXC_GPR寄存器保留位可能会造成系统异常》,这篇文章提出了一个观点,即对于MCU外设寄存器应......
  • Memberinfo call generic method System.InvalidOperationException: 'Late bound op
    staticvoidMain(string[]args){GenericMethod();LogInfo();}staticvoidGenericMethod(){MethodInfomi=typeof(Program).GetMethod("Echo");Console.WriteLine(mi.IsGenericMethodDefinition);Console.WriteLine(mi.Invoke(......