• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

奋斗的软件工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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

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

  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)转换成本地机器码,然后执行程序。

posted on 2024-03-12 12:39  周政然  阅读(40)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3